try fix gui

This commit is contained in:
Vincent Hanewinkel 2025-08-14 20:50:12 +02:00
parent b52611344c
commit 3d28edb236

51
GUI.py
View File

@ -1,52 +1,71 @@
import sys 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): class ListItemWidget(QWidget):
def __init__(self, text, index, btn1f, btn2f): def __init__(self, text, index, on_start, on_stop):
super().__init__() super().__init__()
self.text = text self.text = text
self.index = index # damit wir wissen, zu welchem Eintrag der Button gehört self.index = index
layout = QHBoxLayout(self) layout = QHBoxLayout(self)
# Label für den Text
label = QLabel(text) label = QLabel(text)
layout.addWidget(label) layout.addWidget(label)
# Zwei Buttons rechts layout.addStretch() # schiebt die Buttons nach rechts
btn1 = QPushButton("Start") btn1 = QPushButton("Start")
btn2 = QPushButton("Stop") btn2 = QPushButton("Stop")
# Funktionen verbinden # Variante A: partial übergibt index (und ignoriert das Qt-"checked")
btn1.clicked.connect(btn1f) btn1.clicked.connect(partial(on_start, index))
btn2.clicked.connect(btn2f) 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(btn1)
layout.addWidget(btn2) layout.addWidget(btn2)
layout.setContentsMargins(5, 2, 5, 2) layout.setContentsMargins(5, 2, 5, 2)
layout.addStretch()
class MainWindow(QWidget): class MainWindow(QWidget):
def __init__(self): def __init__(self):
super().__init__() super().__init__()
self.setWindowTitle("Liste mit 2 Köpfen") self.setWindowTitle("Liste mit 2 Köpfen")
self.resize(300, 200) self.resize(360, 280)
main_layout = QVBoxLayout(self) main_layout = QVBoxLayout(self)
# QListWidget
self.list_widget = QListWidget() self.list_widget = QListWidget()
main_layout.addWidget(self.list_widget) main_layout.addWidget(self.list_widget)
# 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): def add_list_item(self, text, index, btn1f, btn2f):
item = QListWidgetItem(self.list_widget) item = QListWidgetItem()
widget = ListItemWidget(text) widget = ListItemWidget(text, index, btn1f, btn2f)
item.setSizeHint(widget.sizeHint()) item.setSizeHint(widget.sizeHint())
self.list_widget.addItem(item) self.list_widget.addItem(item)
self.list_widget.setItemWidget(item, widget) 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) app = QApplication(sys.argv)
window = MainWindow() w = MainWindow()
window.show() w.show()
sys.exit(app.exec_()) sys.exit(app.exec_())