在pyq中使用复选框

2024-05-18 06:34:55 发布

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

1)我在用Qt设计器创建的UI中有一个名为“ch_check”的复选框,需要测试

2)还有一个按钮“bt_button”,它触发一个简单的功能:

self.dlg.bt_button.clicked.connect(self.doCheck)

3)功能:

def doCheck(self):
    if ch_check.isChecked():
        self.dlg.le_text.setText("Hello")
    else:
        self.dlg.le_text.setText("Nope")

但是我不知道如何正确地引用这个框。我该怎么做?我需要先连接复选框吗?到目前为止,我发现的所有示例都使用复选框来触发函数和其他功能,而完全忽略了这个基本用法。我找到了这个问题,但它没有回答如何处理现有的复选框:How to check if a checkbox is checked in pyqt


Tags: textself功能leuiifcheckbutton
0条回答
网友
1楼 · 发布于 2024-05-18 06:34:55

如上所述,我只是犯了一个小错误。正确的代码是:

def doCheck(self):
    checker = self.dlg.ch_check
    if self.dlg.ch_check.isChecked():
        self.dlg.le_text.setText("Hello")
    else:
        self.dlg.le_text.setText("Nope")
网友
2楼 · 发布于 2024-05-18 06:34:55

你可以利用StateChanged信号来实现这一点。对于本例,我们有一个简单的.ui和一个简单的.py文件:

.ui文件定义了两个小部件。一个复选框(ch_check)和一个QLabel(my_label

python文件:

from PyQt4 import QtCore
from PyQt4 import QtGui 
import sys
from test_ui import Ui_MainWindow

class CheckDialog(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QWidget.__init__(self)

        # Set up the user interface from Designer.
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.ch_check.stateChanged.connect(self.state_changed)

    def state_changed(self, int):
        if self.ui.ch_check.isChecked():
            self.ui.my_label.setText("CHECKED!")
        else:
            self.ui.my_label.setText("UNCHECKED!")


if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    window = CheckDialog()
    window.show()
    sys.exit(app.exec_())

说明:

我们用这条线设置信号:

self.ui.ch_check.stateChanged.connect(self.state_changed)

当复选框的状态改变时,它将调用state_changed函数。这就是检查复选框是否选中的逻辑所在。

def state_changed(self, int):
    if self.ui.ch_check.isChecked():
        self.ui.my_label.setText("CHECKED!")
    else:
        self.ui.my_label.setText("UNCHECKED!")

在函数中,我们确定复选框是否已选中。如果是,我们将标签更改为“选中”,如果未选中,则标签更改为“未选中”。


示例:

启动应用程序时,用户界面如下所示:

Newly opened app

选中此框,将更改标签:

Checked checkbox

取消选中该框,也会更改标签:

Unchecked checkbox

相关问题 更多 >