Vincent Hanewinkel fdff4bf9ef try fix
2025-08-14 21:43:16 +02:00

67 lines
2.0 KiB
Python

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
self.btn_start = QPushButton("Start")
self.btn_stop = QPushButton("Stop")
self.btn_stop.setEnabled(False)
self.btn_start.clicked.connect(lambda checked=False: on_start(self))
self.btn_stop.clicked.connect(lambda checked=False: on_stop(self))
layout.addWidget(self.btn_start)
layout.addWidget(self.btn_stop)
def set_running(self, running: bool):
self.btn_start.setEnabled(not running)
self.btn_stop.setEnabled(running)
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, on_start, on_stop):
item = QListWidgetItem()
widget = ListItemWidget(text, index, on_start, on_stop)
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_())