Ich bin neu in Python und PyQt so leid, wenn ich meine Probleme nicht klar beschreiben kann. Ich möchte einen Kinosessel Wähler UI zu tun und das ist der Code, den ich unten gemacht habe:PyQt - QPushButton Schleife
import sys
from PyQt5 import uic
from PyQt5.QtWidgets import (QWidget, QApplication)
class Ui2(QWidget):
def __init__(self):
super(Ui2, self).__init__()
uic.loadUi('seat.ui', self)
self.A1.setStyleSheet("background-color: red")
self.B1.clicked.connect(self.greenButton)
self.show()
def greenButton(self):
self.B1.setStyleSheet("background-color: green")
self.B1.clicked.connect(self.whiteButton)
def whiteButton(self):
self.B1.setStyleSheet("background-color: white")
self.B1.clicked.connect(self.greenButton)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Ui2()
sys.exit(app.exec_())
Das Problem ist, wenn ich die Taste B1 mehrmals, um das Programm einfrieren - ich habe irgendwo gelesen, dass dies verursacht durch vollen Speicher.
Auch dies ist nur für die Taste B1, was soll ich tun, wenn ich die gleichen Funktionen für alle Tasten implementieren möchte?
Vielen Dank!
Vielen Dank! Es hat wie ein Zauber funktioniert. Können Sie mir auch sagen, was ich tun soll, um diese Funktion an allen Tasten (z. B. A1, A2, B1, B2 ...) zu verwenden, ohne Funktionen für jede Taste zu erstellen? – pooroll
Ich bevorzuge immer eine Ereignishandlerfunktion für jedes Ereignis, selbst wenn es Ereignisse desselben Typs auf verschiedenen Widgets gibt. Wenn es unter mehreren Handlern eine gemeinsame Funktionalität gibt, faktor ich das in eine separate Methode. Dann rufe ich diese Methode von jedem Handler auf. Manchmal führt dies zu vielen kleinen Funktionen, aber die Leistungseinbußen sind in der Regel unbedeutend und der Code ist leichter zu lesen und zu verstehen. –