是否可以通过编程方式切换QPushButton
?我有一个用户按下以开始进程的可检查QPushButton
。完成此过程后,如何将按钮的状态更改为未选中状态?
runBtn = QPushButton('Run')
runBtn.setCheckable(True)
runBtn.clicked.connect(runProcess)
def runProcess():
time.sleep(5)
runBtn.uncheck() # how should this be done?
答案 0 :(得分:1)
这应该是诀窍。
runBtn.setChecked(False)
虽然这不是理想的行为。切换按钮应该用于打开和关闭事物,而不是指示某些事情正在进行中。如果某些事情需要时间,你应该将光标更改为等待光标,最好还是显示进度条/对话框。
答案 1 :(得分:1)
一旦你的函数运行完毕,它应该只是调用runBtn.setChecked(False)
。
正如@hluk在对这个答案的评论中指出的那样,任何需要很长时间才能完成的事情都会阻止界面,并不是一个好主意。在这种情况下,最好将其拆分为一个线程。这可能意味着您需要更多的学习,但从长远来看可能是值得的。无论如何,如果您决定使用线程路径,您可能还希望在线程运行时使用setEnabled(bool)
通过按钮禁用用户输入。
答案 2 :(得分:1)
您可以使用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;
}
"""