Vincent Hanewinkel 6d60105d58 fix GUI
2025-08-14 20:50:59 +02:00

71 lines
2.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import sys
from functools import partial
from PyQt5.QtWidgets import (
QApplication, QWidget, QListWidget, QListWidgetItem,
QPushButton, QLabel, QHBoxLayout, QVBoxLayout
)
class ListItemWidget(QWidget):
def __init__(self, text, index, on_start, on_stop):
super().__init__()
self.text = text
self.index = index
layout = QHBoxLayout(self)
label = QLabel(text)
layout.addWidget(label)
layout.addStretch() # schiebt die Buttons nach rechts
btn1 = QPushButton("Start")
btn2 = QPushButton("Stop")
# 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)
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("Liste mit 2 Köpfen")
self.resize(360, 280)
main_layout = QVBoxLayout(self)
self.list_widget = QListWidget()
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):
item = QListWidgetItem()
widget = ListItemWidget(text, index, btn1f, btn2f)
item.setSizeHint(widget.sizeHint())
self.list_widget.addItem(item)
self.list_widget.setItemWidget(item, widget)
# 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}")
def startGUI():
app = QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())