Python 3.x 无线电箱信号混淆
我尝试在不同的Python 3.x 无线电箱信号混淆,python-3.x,radio-button,pyqt5,Python 3.x,Radio Button,Pyqt5,我尝试在不同的QGroupBox中创建多个QRadioButton。之后,我想在屏幕上按下print()哪个QRadioButton 当我按下QGroupBox中的第一个按钮时,没有问题。但是,在第二次尝试时,第一个和第二个按钮打印到屏幕上。如果你尝试我的代码,你会明白我的意思 代码正常工作后,我将为每个QRadioButton连接不同的函数。这就是为什么输出信号对我来说很重要 这是我的密码 from PyQt5.QtWidgets import * import sys class B
QGroupBox
中创建多个QRadioButton
。之后,我想在屏幕上按下print()
哪个QRadioButton
当我按下QGroupBox
中的第一个按钮时,没有问题。但是,在第二次尝试时,第一个和第二个按钮打印到屏幕上。如果你尝试我的代码,你会明白我的意思
代码正常工作后,我将为每个QRadioButton连接不同的函数。这就是为什么输出信号对我来说很重要
这是我的密码
from PyQt5.QtWidgets import *
import sys
class ButtonWidget(QWidget):
def __init__(self):
super(ButtonWidget, self).__init__()
groups = {"Functions": ("Sinus", "Cosines"),
"Colors": ("Red", "Green"),
"Lines": ("Solid", "Dashed")
}
# Main Group
main_group = QGroupBox("Operations")
main_group_layout = QHBoxLayout()
# loop on group names
for group, buttons in groups.items():
group_box = QGroupBox(group)
group_layout = QVBoxLayout()
for button_text in buttons:
button = QRadioButton(button_text)
button.setObjectName("radiobutton_%s" % button_text)
button.toggled.connect(self.radio_func)
group_layout.addWidget(button)
group_box.setLayout(group_layout)
main_group_layout.addWidget(group_box)
main_group.setLayout(main_group_layout)
# Widget
main_widget = QWidget()
main_widget_layout = QVBoxLayout()
main_widget.setLayout(main_widget_layout)
main_widget_layout.addWidget(main_group)
# Layout Set
self.setLayout(main_widget_layout)
self.show()
def radio_func(self):
radio_btn = self.sender()
print(f"{radio_btn.text()}\n-------------------")
if __name__ == "__main__":
app = QApplication(sys.argv)
ui = ButtonWidget()
sys.exit(app.exec_())
切换信号通知QRadioButton中的状态变化,开始时所有按钮均未选中,因此当按下一个按钮时,其中一个按钮的状态将从未选中变为选中,当按下另一个按钮时,选中的按钮将变为未选中,按下的按钮将从未选中变为选中,即,有两个按钮可改变状态,因此将发出两个信号 一种可能的解决方案是使用信号传输的状态:
def radio_func(self, on):
if on:
radio_btn = self.sender()
print(f"{radio_btn.text()}\n-------------------")
def收音机功能(自开):
如果启用:
radio_btn=self.sender()
打印(f“{radio_btn.text()}\n---------------------------”
另一种解决方案是使用单击的信号:
button.clicked.connect(self.radio_func)
按钮。单击。连接(self.radio_func)
当我使用QPushButton而不是QRadioButton时,没有这样的问题,但我需要使用QRadioButton感谢您。我如何设置默认检查“让我们说”呢?为了我的code@Gokberk使用if button\u text==“Foo text”:button.setChecked(True)