QPushButton 切换连接似乎不会在开始时触发
QPushButton toggled connection does not seems to be trigger at the start
我正在连接一个 QPushButton,它将在其中隐藏/显示框架中的小部件。
我使用 .ui
方法加载/创建了我的 GUI。
对于这个QPushButton,我已经设置并检查了属性setChecked
。
class MyWindow(QtGui.QWidget):
def __init__(self):
...
# self.informationVisBtn, `setChecked` and `setCheckable` field is checked in the .ui file
self.informationVisBtn.toggled.connect(self.setInfoVis)
def setInfoVis(self):
self.toggleVisibility(
self.informationVisBtn.isChecked()
)
def toggleVisibility(self, value):
if value:
self.uiInformationFrame.show()
self.informationVisBtn.setText("-")
else:
self.uiInformationFrame.hide()
self.informationVisBtn.setText("+")
在第一次尝试加载我的代码时,我注意到 informationVisBtn
,当它被检查时,框架正在显示,但文本没有设置为 -
而是它保留为我的 .ui 文件中设置的 +
。
除非在 __init__()
中,如果我在设置连接之前添加 setInfoVis()
,只会正确填充文本。
使用toggled
不触发启动时的状态吗?提前感谢任何回复。
当状态发生变化时发出信号,并通知到那一刻连接的插槽。连接新插槽时,只有在连接后状态发生变化时才会通知它,因此始终建议将状态更新为信号。另一方面,没有必要创建 setInfoVis() 方法,因为切换会传输状态信息。
class MyWindow(QtGui.QWidget):
def __init__(self):
super(MyWindow, self).__init__()
# ...
self.informationVisBtn.toggled.connect(self.toggleVisibility)
# update the state it has since the connection
# was made after the state change
self.toggleVisibility(
self.informationVisBtn.isChecked()
)
@QtCore.pyqtSlot(bool)
def toggleVisibility(self, value):
self.uiInformationFrame.setVisible(value)
self.informationVisBtn.setText("-" if value else "+")
我正在连接一个 QPushButton,它将在其中隐藏/显示框架中的小部件。
我使用 .ui
方法加载/创建了我的 GUI。
对于这个QPushButton,我已经设置并检查了属性setChecked
。
class MyWindow(QtGui.QWidget):
def __init__(self):
...
# self.informationVisBtn, `setChecked` and `setCheckable` field is checked in the .ui file
self.informationVisBtn.toggled.connect(self.setInfoVis)
def setInfoVis(self):
self.toggleVisibility(
self.informationVisBtn.isChecked()
)
def toggleVisibility(self, value):
if value:
self.uiInformationFrame.show()
self.informationVisBtn.setText("-")
else:
self.uiInformationFrame.hide()
self.informationVisBtn.setText("+")
在第一次尝试加载我的代码时,我注意到 informationVisBtn
,当它被检查时,框架正在显示,但文本没有设置为 -
而是它保留为我的 .ui 文件中设置的 +
。
除非在 __init__()
中,如果我在设置连接之前添加 setInfoVis()
,只会正确填充文本。
使用toggled
不触发启动时的状态吗?提前感谢任何回复。
当状态发生变化时发出信号,并通知到那一刻连接的插槽。连接新插槽时,只有在连接后状态发生变化时才会通知它,因此始终建议将状态更新为信号。另一方面,没有必要创建 setInfoVis() 方法,因为切换会传输状态信息。
class MyWindow(QtGui.QWidget):
def __init__(self):
super(MyWindow, self).__init__()
# ...
self.informationVisBtn.toggled.connect(self.toggleVisibility)
# update the state it has since the connection
# was made after the state change
self.toggleVisibility(
self.informationVisBtn.isChecked()
)
@QtCore.pyqtSlot(bool)
def toggleVisibility(self, value):
self.uiInformationFrame.setVisible(value)
self.informationVisBtn.setText("-" if value else "+")