Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 无线电箱信号混淆_Python 3.x_Radio Button_Pyqt5 - Fatal编程技术网

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)