以编程方式切换Python PyQt QPushbutton

2024-05-03 06:02:15 发布

您现在位置:Python中文网/ 问答频道 /正文

是否可以通过编程方式切换QPushButton?我有一个可检查的QPushButton,用户按下它来启动进程。处理完成后,如何将按钮的状态更改为未选中?

runBtn = QPushButton('Run')
runBtn.setCheckable(True)
runBtn.clicked.connect(runProcess)

def runProcess():
    time.sleep(5)
    runBtn.uncheck()    # how should this be done?

Tags: run用户true进程状态def编程connect
3条回答

这应该是个骗局。

runBtn.setChecked(False)

尽管这不是理想的行为。切换按钮应该用于打开和关闭事物,而不是指示正在进行的事情。如果需要时间,您应该将光标改为等待光标,最好还是显示进度条/对话框。

只要函数运行完毕,就应该调用runBtn.setChecked(False)

正如@hluk在对这个答案的评论中指出的那样,任何需要很长时间才能完成的操作都会阻塞界面,这并不是一个好主意。如果那样的话,最好把它分成一条线。这对你来说可能意味着更多的学习,但从长远来看可能是值得的。无论如何,如果您决定使用线程路由,您可能还希望在线程运行时使用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;
       }

"""

Enable ButtonDisable Button

相关问题 更多 >