【发布时间】:2017-12-25 02:40:15
【问题描述】:
当函数使用参数时,我很难将函数分配给变量。这些参数似乎是必需的,但无论我输入什么参数,它都不起作用。
场景是我正在创建我的第一个 GUI,它是在 QT Designer 中设计的。在接受按钮允许用户继续之前,我需要勾选复选框。
目前,这是为了让我知道勾选复选框是否返回任何内容(确实如此)但是我不知道如何将该结果传递给下一个函数“accept_btn”。我认为最简单的方法是创建一个变量,但是它需要位置参数,这就是我卡住的地方。
我的代码:
class MainWindow(QtWidgets.QMainWindow, Deleter_Main.Ui_MainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.setupUi(self)
self.ConfirmBox.stateChanged.connect(self.confirm_box)
self.Acceptbtn.clicked.connect(self.accept_btn)
def confirm_box(self, state):
if self.ConfirmBox.isChecked():
print("checked")
else:
print("not checked")
checked2 = confirm_box(self, state)
def accept_btn(self):
if checked2 == True:
print("clicked")
else:
print("not clicked")
app = QApplication(sys.argv)
form = MainWindow()
form.show()
app.exec_()
代码卡在“checked2”并出现错误:
NameError: name 'self' is not defined
我认为可能有其他解决方案可以在一个函数中运行所有这些,但我似乎无法找到一种方法,而需要以下内容。
self.ConfirmBox.stateChanged.connect(self.confirm_box)
如果有人能帮助我准确理解为什么我需要函数和变量中的“self”参数,我将不胜感激。
提前致谢,
【问题讨论】:
-
什么是接受按钮?确认复选框后是否启用接受按钮?
-
这个想法与条款和条件页面相同,您必须先勾选“我确认”,然后才能按下一步按钮。在我的代码中,在选中复选框之前不一定需要灰显或隐藏,因为我计划在未选中复选框的情况下添加一条消息。复选框只是接受按钮的先决条件。
标签: python-3.x user-interface pyqt pyqt5