2024-05-03 06:02:15 发布
网友
是否可以通过编程方式切换QPushButton?我有一个可检查的QPushButton,用户按下它来启动进程。处理完成后,如何将按钮的状态更改为未选中?
QPushButton
runBtn = QPushButton('Run') runBtn.setCheckable(True) runBtn.clicked.connect(runProcess) def runProcess(): time.sleep(5) runBtn.uncheck() # how should this be done?
这应该是个骗局。
runBtn.setChecked(False)
尽管这不是理想的行为。切换按钮应该用于打开和关闭事物,而不是指示正在进行的事情。如果需要时间,您应该将光标改为等待光标,最好还是显示进度条/对话框。
只要函数运行完毕,就应该调用runBtn.setChecked(False)。
正如@hluk在对这个答案的评论中指出的那样,任何需要很长时间才能完成的操作都会阻塞界面,这并不是一个好主意。如果那样的话,最好把它分成一条线。这对你来说可能意味着更多的学习,但从长远来看可能是值得的。无论如何,如果您决定使用线程路由,您可能还希望在线程运行时使用setEnabled(bool)禁用通过按钮的用户输入。
setEnabled(bool)
您可以使用QpushButton和样式表。这是密码
if(process==running): button.setStyleSheet(ENABLE_STYLESHEET ) else button.setStyleSheet(DISABLE_STYLESHEET )
您可以定义如下样式表
ENABLE_STYLESHEET = """ QPushButton { border: 1px solid #007a94; border-radius: 6px; color:#ffffff; background-color: #007a94; min-width: 80px; } QPushButton:pressed { background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #008aa6, stop: 1 #008aa6); } QPushButton:flat { border: none; } """ DISABLE_STYLESHEET = """ QPushButton { border: 1px solid #808080; border-radius: 6px; color:#ffffff; background-color: #808080; min-width: 80px; } QPushButton:flat { border: none; } """
这应该是个骗局。
尽管这不是理想的行为。切换按钮应该用于打开和关闭事物,而不是指示正在进行的事情。如果需要时间,您应该将光标改为等待光标,最好还是显示进度条/对话框。
只要函数运行完毕,就应该调用
runBtn.setChecked(False)
。正如@hluk在对这个答案的评论中指出的那样,任何需要很长时间才能完成的操作都会阻塞界面,这并不是一个好主意。如果那样的话,最好把它分成一条线。这对你来说可能意味着更多的学习,但从长远来看可能是值得的。无论如何,如果您决定使用线程路由,您可能还希望在线程运行时使用
setEnabled(bool)
禁用通过按钮的用户输入。您可以使用QpushButton和样式表。这是密码
您可以定义如下样式表
相关问题 更多 >
编程相关推荐