【发布时间】:2019-09-09 11:13:08
【问题描述】:
我正在尝试在操作期间更改按钮的样式。
当按钮被按下时,我想让它们变成蓝色,然后读取 rfid 卡,然后通过 ID 将按钮的颜色更改为绿色或红色(代码中只是红色以便更容易)。
问题在于将按钮样式更改为蓝色无济于事(绿色和红色都可以正常工作)。 它正在等待完成“clicked()”方法吗? 如何告诉 PyQt5 “现在就做!” ?
编辑:我将伪代码修改为可重现的示例。
#!/usr/bin/python3
import sys
import time
from PyQt5.QtWidgets import *
class MainScreen(QWidget):
def __init__(self):
QWidget.__init__(self)
self.button = QPushButton("TEXT")
self.button.clicked.connect(self.clicked)
self.changeButtonColor("black") # set default style
self.grid = QGridLayout(self)
self.grid.addWidget(self.button)
self.show()
def changeButtonColor(self, color):
self.button.setStyleSheet("QPushButton{ \
color: "+color+"; font: bold 18px;}")
def clicked(self):
self.changeButtonColor("blue") # nothing happening (this is my problem!)
uid = self.readCard() # reading ID from rfid card
self.changeButtonColor("red")
def readCard(self):
#return rfid.read() # in real case
time.sleep(2)
return "12345678"
def main():
app = QApplication(sys.argv)
window = MainScreen()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
【问题讨论】:
标签: python user-interface events pyqt5