我对研究Qt和Python的Qt还很陌生;关于PyQt5 checkbox对象,我遇到了一个问题。 在下面的代码中,当我选中一个复选框时,我得到一个重定向到已连接函数的信号。 如果框被选中或取消选中,它会正确地显示出来,但是我的脚本似乎混淆了哪个框已经改变了状态。 例如,如果我检查第一个对象,那么在第一个对象之后执行的所有检查都会显示绑定到最早对象的名称值,就像它们实际上是同一个对象或者具有相同的地址一样。相反,如果我选中并取消选中一个框,那么下一个选中的框将返回绑定到输出中特定复选框的正确名称。 我做错什么了?你知道吗
课程代码如下:
class window_gui(QMainWindow):
def __init__(self):
QtWidgets.QMainWindow.__init__(self)
mainWindow = loadUi("utilities/mygui_gui.ui", self)
self.setWindowTitle("window name")
#checkBox per selezione uno: sensore sul checked yes or not
mainWindow.checkOne.clicked.connect(self.selectBooks)
# checkBox per selezione due: sensore sul checked yes or not
mainWindow.checkTwo.toggled.connect(self.selectBooks)
# checkBox per selezione tre: sensore sul checked yes or not
mainWindow.checkThree.toggled.connect(self.selectBooks)
# checkBox per selezione quattro: sensore sul checked yes or not
mainWindow.checkFour.toggled.connect(self.selectBooks)
# checkBox per selezione cinque: sensore sul checked yes or not
mainWindow.checkFive.toggled.connect(self.selectBooks)
def selectBooks(self, toggle):
if toggle == QtCore.Qt.Checked:
if self.checkOne.isChecked():
print(self.checkOne.text(), "1")
elif self.checkTwo.isChecked():
print(self.checkTwo.text(), "2")
elif self.checkThree.isChecked():
print(self.checkThree.text(), "3")
elif self.checkFour.isChecked():
print(self.checkFour.text(), "4")
elif self.checkFive.isChecked():
print(self.checkFive.text(), "5")
else:
print("error")
print('Checked')
else:
print('Unchecked')
选中
checkOne
并单击checkTwo
时,输入selectBooks
。 在该函数中输入if-else
-语句,第一个条件是self.checkOne.isChecked()
,它仍然是True
,因此您可以print(self.checkOne.text(), "1")
,尽管您刚刚单击了checkTwo
。你知道吗您可以为每个
QCheckBox
创建一个插槽(选项1),否则您需要以某种方式告诉您的插槽刚才单击了哪个QCheckbox
(请参见选项2)。你知道吗此外,还必须使用
stateChanged
信号。你知道吗方案1
选项2(check out 'lambda' expressions):
相关问题 更多 >
编程相关推荐