try fix gui
This commit is contained in:
parent
b52611344c
commit
3d28edb236
53
GUI.py
53
GUI.py
@ -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)
|
||||||
|
|
||||||
def add_list_item(self, text, index ,btn1f, btn2f):
|
# Beispiel-Daten
|
||||||
item = QListWidgetItem(self.list_widget)
|
for i in range(5):
|
||||||
widget = ListItemWidget(text)
|
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())
|
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_())
|
||||||
Loading…
x
Reference in New Issue
Block a user