diff --git a/GUI.py b/GUI.py index 77d745b..e6633c0 100644 --- a/GUI.py +++ b/GUI.py @@ -1,52 +1,71 @@ import sys -from PyQt5.QtWidgets import QApplication, QWidget, QListWidget, QListWidgetItem, QPushButton, QLabel, QHBoxLayout, QVBoxLayout +from functools import partial +from PyQt5.QtWidgets import ( + QApplication, QWidget, QListWidget, QListWidgetItem, + QPushButton, QLabel, QHBoxLayout, QVBoxLayout +) class ListItemWidget(QWidget): - def __init__(self, text, index, btn1f, btn2f): + def __init__(self, text, index, on_start, on_stop): super().__init__() self.text = text - self.index = index # damit wir wissen, zu welchem Eintrag der Button gehört + self.index = index layout = QHBoxLayout(self) - # Label für den Text label = QLabel(text) layout.addWidget(label) - # Zwei Buttons rechts + layout.addStretch() # schiebt die Buttons nach rechts + btn1 = QPushButton("Start") btn2 = QPushButton("Stop") - # Funktionen verbinden - btn1.clicked.connect(btn1f) - btn2.clicked.connect(btn2f) + # Variante A: partial – übergibt index (und ignoriert das Qt-"checked") + btn1.clicked.connect(partial(on_start, index)) + btn2.clicked.connect(partial(on_stop, index)) + + # Variante B (gleichwertig): lambda + # btn1.clicked.connect(lambda checked=False, i=index: on_start(i)) + # btn2.clicked.connect(lambda checked=False, i=index: on_stop(i)) layout.addWidget(btn1) layout.addWidget(btn2) layout.setContentsMargins(5, 2, 5, 2) - layout.addStretch() + class MainWindow(QWidget): def __init__(self): super().__init__() self.setWindowTitle("Liste mit 2 Köpfen") - self.resize(300, 200) + self.resize(360, 280) main_layout = QVBoxLayout(self) - # QListWidget self.list_widget = QListWidget() main_layout.addWidget(self.list_widget) - def add_list_item(self, text, index ,btn1f, btn2f): - item = QListWidgetItem(self.list_widget) - widget = ListItemWidget(text) + # Beispiel-Daten + for i in range(5): + self.add_list_item(f"Eintrag {i+1}", i+1, self.handle_start, self.handle_stop) + + def add_list_item(self, text, index, btn1f, btn2f): + item = QListWidgetItem() + widget = ListItemWidget(text, index, btn1f, btn2f) item.setSizeHint(widget.sizeHint()) self.list_widget.addItem(item) self.list_widget.setItemWidget(item, widget) -def startGUI(): + # Die Aktionen, die beim Klick ausgeführt werden sollen + def handle_start(self, index): + print(f"Start gedrückt bei Eintrag {index}") + + def handle_stop(self, index): + print(f"Stop gedrückt bei Eintrag {index}") + + +if __name__ == "__main__": app = QApplication(sys.argv) - window = MainWindow() - window.show() + w = MainWindow() + w.show() sys.exit(app.exec_()) \ No newline at end of file