gpt4 book ai didi

PySide/等待或 sleep

转载 作者:行者123 更新时间:2023-12-04 04:45:08 27 4
gpt4 key购买 nike

我是 python 和 pyside 的新手。我将尝试成功运行以下代码。但现在我希望程序在显示窗口后等待用户无法使用它的定义时间,然后升级状态栏。我会尝试 sleep() 但不知道它必须以正确的方式放置在代码中的哪个位置。感谢您的帮助。

#!/usr/bin/python
# -*- coding: utf-8 -*-

"""
ZetCode PySide tutorial

This program creates a statusbar.

author: Jan Bodnar
website: zetcode.com
last edited: August 2011
"""

import sys, time
from PySide import QtGui

class Main(QtGui.QMainWindow):

def __init__(self):
super(Main, self).__init__()

self.initUI()

def initUI(self):

exitAction = QtGui.QAction(QtGui.QIcon('exit.png'), '&Exit', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.setStatusTip('Exit application')
exitAction.triggered.connect(self.close)

self.statusBar().showMessage('no connection')

menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(exitAction)

self.setGeometry(100, 100, 400,300)
self.setWindowTitle('Main')
self.show()

def main():

app = QtGui.QApplication(sys.argv)
ex = Main()
sys.exit(app.exec_())


if __name__ == '__main__':
main()

最佳答案

不要使用 sleep . sleep 只会阻塞事件的事件循环,用户仍然可以单击 GUI 中的任意位置,事件将在 sleep 之后延迟传递。已经回来了。

如果您想禁用用户交互,请禁用小部件(并使用计时器重新启用它)。您的案例中的一个简单示例可能如下所示:

...
def main():
app = QtGui.QApplication(sys.argv)
ex = Main()
ex.setEnabled(False)
QtCore.QTimer.singleShot(4000, lambda: es.setEnabled(True))
sys.exit(app.exec_())
...

关于PySide/等待或 sleep ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18317723/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com