【发布时间】:2021-05-05 05:27:06
【问题描述】:
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("My Window")
self.setGeometry(400, 400, 400, 200)
btn1 = QPushButton("button1", self)
btn1.move(20, 20)
btn1.clicked.connect(self.btn1_clicked)
btn2 = QPushButton("button2", self)
btn2.move(20, 70)
btn2.clicked.connect(self.btn2_clicked)
def btn1_clicked(self):
btn1function
def btn2_clicked(self):
btn2function
假设我想在上午 9 点激活 btn1 功能,在上午 10 点激活 btn2 功能,并在功能激活 5 分钟后自动停用该功能。我尝试放置在上午 9 点和 5 分钟后断开的循环,但发生了错误。
我该怎么做?
【问题讨论】:
-
像 Qt 这样的 UI 框架是 event driven,它们对来自系统或用户交互的事件做出反应,因此它们永远不会被
time.sleep等函数阻止或 while 循环。虽然可以使用QTimer 激活您的函数,但它们所做的不应使用任何类型的阻塞,因此应将它们放在单独的线程中。对此进行一些研究,并考虑 no 允许从其他线程访问 ui 元素,因此查找 QThread 和自定义信号。
标签: python pyqt qpushbutton