Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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 如何检查RadioButton是否已从其他类中检查?_Python_Pyqt5 - Fatal编程技术网

Python 如何检查RadioButton是否已从其他类中检查?

Python 如何检查RadioButton是否已从其他类中检查?,python,pyqt5,Python,Pyqt5,我正在PyQt5中制作一个GUI,其中有多个选项卡。在其中一个选项卡中,用户选择一个单选按钮,其中包含他们正在输入的数据类型 此信息更改了其他选项卡中可用的按钮,我在从原始选项卡类传递此信息时遇到问题。我想看看是否从另一个选项卡选中了单选按钮,如果是,则启用一个按钮 我有一个函数可以根据选择的单选按钮返回字符串,但是当我从另一个选项卡调用getDataType()函数时,会出现错误“AttributeError:module'DataTab'没有属性'getDataType'。” 我尝试将get

我正在PyQt5中制作一个GUI,其中有多个选项卡。在其中一个选项卡中,用户选择一个单选按钮,其中包含他们正在输入的数据类型

此信息更改了其他选项卡中可用的按钮,我在从原始选项卡类传递此信息时遇到问题。我想看看是否从另一个选项卡选中了单选按钮,如果是,则启用一个按钮

我有一个函数可以根据选择的单选按钮返回字符串,但是当我从另一个选项卡调用getDataType()函数时,会出现错误“AttributeError:module'DataTab'没有属性'getDataType'。”

我尝试将getDataType()函数移到DataTab类之外,但由于单选按钮使用“self”,因此无法访问它们

我还尝试创建一个新类,并从函数中调用该新类,但随后我陷入了如何将信息获取到另一个选项卡的困境

因此,在本例中,一旦用户在“数据”选项卡中选择了单选按钮,我希望启用“分析”选项卡上相应的按钮

当我取消对getDataType()调用的注释时,我得到以下错误:“AttributeError:模块'DataTab'没有属性'getDataType'”


这种情况下的一种可能解决方案是使用信号通知QRadioButton状态的变化,以启用或禁用按钮

import sys

from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import (
    QWidget,
    QVBoxLayout,
    QRadioButton,
    QGroupBox,
    QPushButton,
    QGridLayout,
    QButtonGroup,
    QApplication,
    QTabWidget,
)


class Widget(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setStyleSheet("font: 15pt Tw Cen MT")

        self.data_tab = DataTab()
        self.analysis_tab = AnalysisTab()

        self.tabWidget = QTabWidget()
        self.tabWidget.addTab(self.data_tab, "Data Input")
        self.tabWidget.addTab(self.analysis_tab, "Analysis")

        layout = QVBoxLayout(self)
        layout.addWidget(self.tabWidget)

        self.data_tab.intervalRadioButton.toggled.connect(
            self.analysis_tab.analyzeIntervalButton.setEnabled
        )
        self.data_tab.ordinalRadioButton.toggled.connect(
            self.analysis_tab.analyzeOrdinalButton.setEnabled
        )
        self.data_tab.frequencyRadioButton.toggled.connect(
            self.analysis_tab.analyzeFrequencyButton.setEnabled
        )


class DataTab(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        layout = QGridLayout(self)
        self.intervalRadioButton = QRadioButton("Interval")
        self.ordinalRadioButton = QRadioButton("Ordinal")
        self.frequencyRadioButton = QRadioButton("Frequency")
        self.submitButton = QPushButton("Submit Data")
        layout.addWidget(self.intervalRadioButton, 7, 0, 1, 3)
        layout.addWidget(self.ordinalRadioButton, 8, 0, 1, 3)
        layout.addWidget(self.frequencyRadioButton, 9, 0, 1, 3)


class AnalysisTab(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.createChooseIntervalGroup()
        self.createChooseOrdinalGroup()
        self.createChooseFrequencyGroup()

        layout = QGridLayout(self)
        layout.addWidget(self.ChooseIntervalGroup, 0, 1)
        layout.addWidget(self.ChooseOrdinalGroup, 1, 1)
        layout.addWidget(self.ChooseFrequencyGroup, 2, 1)

    def createChooseIntervalGroup(self):
        self.ChooseIntervalGroup = QGroupBox("Tests for Interval Data")
        self.analyzeIntervalButton = QPushButton("Analyze")
        self.analyzeIntervalButton.setEnabled(False)
        layout = QGridLayout(self.ChooseIntervalGroup)
        layout.addWidget(self.analyzeIntervalButton, 1, 1)

    def createChooseOrdinalGroup(self):
        self.ChooseOrdinalGroup = QGroupBox("Tests for Ordinal Data")
        self.analyzeOrdinalButton = QPushButton("Analyze")
        self.analyzeOrdinalButton.setEnabled(False)
        layout = QGridLayout(self.ChooseOrdinalGroup)
        layout.addWidget(self.analyzeOrdinalButton, 1, 1)

    def createChooseFrequencyGroup(self):
        self.ChooseFrequencyGroup = QGroupBox("Tests for Frequency Data")
        self.analyzeFrequencyButton = QPushButton("Analyze")
        self.analyzeFrequencyButton.setEnabled(False)
        layout = QGridLayout(self.ChooseFrequencyGroup)
        layout.addWidget(self.analyzeFrequencyButton, 1, 1)


def run():
    app = QApplication(sys.argv)
    tabPage = Widget()
    tabPage.show()
    app.exec_()


run()
导入系统 从PyQt5.QtGui导入QIcon 从PyQt5.QtWidgets导入( QWidget, QVBoxLayout, QRadioButton, QGroupBox, QPushButton, QGridLayout, QButtonGroup, QApplication, QTabWidget, ) 类小部件(QWidget): def uuu init uuu(self,parent=None): super()。\uuuu init\uuuu(父级) 自我设置样式表(“字体:15pt Tw Cen MT”) self.data_tab=DataTab() self.analysis\u tab=AnalysisTab() self.tabWidget=QTabWidget() self.tabWidget.addTab(self.data_选项卡,“数据输入”) self.tabWidget.addTab(self.analysis_选项卡,“分析”) 布局=QVBoxLayout(自身) layout.addWidget(self.tabWidget) self.data_tab.intervalRadioButton.toggled.connect( self.analysis_tab.analyzeIntervalButton.setEnabled ) self.data_tab.ordinalRadioButton.toggled.connect( self.analysis_tab.analyzeOrdinalButton.setEnabled ) self.data_tab.frequencyRadioButton.toggled.connect( self.analysis_tab.analyzeFrequencyButton.setEnabled ) 类数据选项卡(QWidget): def uuu init uuu(self,parent=None): super()。\uuuu init\uuuu(父级) 布局=QGridLayout(自身) self.intervalRadioButton=QRadioButton(“间隔”) self.ordinalRadioButton=QRadioButton(“序号”) self.frequencyRadioButton=QRadioButton(“频率”) self.submitButton=QPushButton(“提交数据”) layout.addWidget(self.intervalRadioButton,7,0,1,3) layout.addWidget(self.ordinalRadioButton,8,0,1,3) layout.addWidget(self.frequencyRadioButton,9,0,1,3) 类分析选项卡(QWidget): def uuu init uuu(self,parent=None): super()。\uuuu init\uuuu(父级) self.createChooseIntervalGroup() self.createChooseOrdinalGroup() self.createChooseFrequencyGroup() 布局=QGridLayout(自身) layout.addWidget(self.ChooseIntervalGroup,0,1) layout.addWidget(self.ChooseOrdinalGroup,1,1) layout.addWidget(self.ChooseFrequencyGroup,2,1) def CreateSchooseIntervalGroup(自身): self.ChooseIntervalGroup=QGroupBox(“间隔数据测试”) self.analyzeIntervalButton=QPushButton(“分析”) self.analyzeIntervalButton.setEnabled(假) 布局=QGridLayout(self.ChooseIntervalGroup) layout.addWidget(self.analyzeIntervalButton,1,1) def CreateSchooseOrdinalGroup(自): self.ChooseOrdinalGroup=QGroupBox(“顺序数据测试”) self.analyzeOrdinalButton=QPushButton(“分析”) self.analyzeOrdinalButton.setEnabled(False) 布局=QGridLayout(self.ChooseOrdinalGroup) layout.addWidget(self.analyzeOrdinalButton,1,1) def CreateSchooseFrequencyGroup(自): self.ChooseFrequencyGroup=QGroupBox(“频率数据测试”) self.analyzeFrequencyButton=QPushButton(“分析”) self.analyzeFrequencyButton.setEnabled(假) 布局=QGridLayout(self.ChooseFrequencyGroup) layout.addWidget(self.analyzeFrequencyButton,1,1) def run(): app=QApplication(sys.argv) tabPage=Widget() tabPage.show() app.exec()
run()我刚刚做了!我希望这有助于澄清问题。
import sys

from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import (
    QWidget,
    QVBoxLayout,
    QRadioButton,
    QGroupBox,
    QPushButton,
    QGridLayout,
    QButtonGroup,
    QApplication,
    QTabWidget,
)


class Widget(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setStyleSheet("font: 15pt Tw Cen MT")

        self.data_tab = DataTab()
        self.analysis_tab = AnalysisTab()

        self.tabWidget = QTabWidget()
        self.tabWidget.addTab(self.data_tab, "Data Input")
        self.tabWidget.addTab(self.analysis_tab, "Analysis")

        layout = QVBoxLayout(self)
        layout.addWidget(self.tabWidget)

        self.data_tab.intervalRadioButton.toggled.connect(
            self.analysis_tab.analyzeIntervalButton.setEnabled
        )
        self.data_tab.ordinalRadioButton.toggled.connect(
            self.analysis_tab.analyzeOrdinalButton.setEnabled
        )
        self.data_tab.frequencyRadioButton.toggled.connect(
            self.analysis_tab.analyzeFrequencyButton.setEnabled
        )


class DataTab(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        layout = QGridLayout(self)
        self.intervalRadioButton = QRadioButton("Interval")
        self.ordinalRadioButton = QRadioButton("Ordinal")
        self.frequencyRadioButton = QRadioButton("Frequency")
        self.submitButton = QPushButton("Submit Data")
        layout.addWidget(self.intervalRadioButton, 7, 0, 1, 3)
        layout.addWidget(self.ordinalRadioButton, 8, 0, 1, 3)
        layout.addWidget(self.frequencyRadioButton, 9, 0, 1, 3)


class AnalysisTab(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.createChooseIntervalGroup()
        self.createChooseOrdinalGroup()
        self.createChooseFrequencyGroup()

        layout = QGridLayout(self)
        layout.addWidget(self.ChooseIntervalGroup, 0, 1)
        layout.addWidget(self.ChooseOrdinalGroup, 1, 1)
        layout.addWidget(self.ChooseFrequencyGroup, 2, 1)

    def createChooseIntervalGroup(self):
        self.ChooseIntervalGroup = QGroupBox("Tests for Interval Data")
        self.analyzeIntervalButton = QPushButton("Analyze")
        self.analyzeIntervalButton.setEnabled(False)
        layout = QGridLayout(self.ChooseIntervalGroup)
        layout.addWidget(self.analyzeIntervalButton, 1, 1)

    def createChooseOrdinalGroup(self):
        self.ChooseOrdinalGroup = QGroupBox("Tests for Ordinal Data")
        self.analyzeOrdinalButton = QPushButton("Analyze")
        self.analyzeOrdinalButton.setEnabled(False)
        layout = QGridLayout(self.ChooseOrdinalGroup)
        layout.addWidget(self.analyzeOrdinalButton, 1, 1)

    def createChooseFrequencyGroup(self):
        self.ChooseFrequencyGroup = QGroupBox("Tests for Frequency Data")
        self.analyzeFrequencyButton = QPushButton("Analyze")
        self.analyzeFrequencyButton.setEnabled(False)
        layout = QGridLayout(self.ChooseFrequencyGroup)
        layout.addWidget(self.analyzeFrequencyButton, 1, 1)


def run():
    app = QApplication(sys.argv)
    tabPage = Widget()
    tabPage.show()
    app.exec_()


run()