【问题标题】:Call function when checkbox is checked选中复选框时调用函数
【发布时间】:2019-08-11 05:25:03
【问题描述】:

我希望当我更改行编辑时调用另一个函数,并且在该函数中有一个带有Qt.Checked 的 if-else。当我编辑行编辑然后选中复选框时,来自行编辑的文本被写入变量。但是当我再次更改行编辑时,即使选中了复选框,它也只会在更改功能中运行else。我不明白为什么。

复选框:

self.filenamecheck.stateChanged.connect(self.changeFileName)

行编辑:

self.nameLine.textEdited.connect(self.onChangeNameLine)

功能:

def onChangeNameLine(self,state):
    self.changeFileName(self)
    print("Filename changed")

def changeFileName(self, state):
    name = self.nameLine.text()
    print("Called change function")
    if state == Qt.Checked:
        self.filenameLine.setText(name)
        print("called change if")
    else:
        self.filenameLine.setText('')
        print("called change else")

感谢您的帮助!

【问题讨论】:

    标签: python pyqt signals-slots qcheckbox


    【解决方案1】:
    def onChangeNameLine(self):
        self.changeFileName()
        print("Filename changed")
    
    def changeFileName(self):
        name = self.nameLine.text()
        print("Called change function")
        if self.filenamecheck.isChecked():
            self.filenameLine.setText(name)
            print("called change if")
        else:
            self.filenameLine.setText('')
            print("called change else")
    

    【讨论】:

    • self.filenameLine.setText('')改成self.filenameLine.clear(),可读性更强
    猜你喜欢
    • 2013-06-21
    • 1970-01-01
    • 2016-09-08
    • 2022-01-19
    • 1970-01-01
    • 2014-06-09
    • 2018-09-25
    • 2018-11-04
    • 2013-10-24
    相关资源
    最近更新 更多