Python 如何检查RadioButton是否已从其他类中检查?
我正在PyQt5中制作一个GUI,其中有多个选项卡。在其中一个选项卡中,用户选择一个单选按钮,其中包含他们正在输入的数据类型 此信息更改了其他选项卡中可用的按钮,我在从原始选项卡类传递此信息时遇到问题。我想看看是否从另一个选项卡选中了单选按钮,如果是,则启用一个按钮 我有一个函数可以根据选择的单选按钮返回字符串,但是当我从另一个选项卡调用getDataType()函数时,会出现错误“AttributeError:module'DataTab'没有属性'getDataType'。” 我尝试将getDataType()函数移到DataTab类之外,但由于单选按钮使用“self”,因此无法访问它们 我还尝试创建一个新类,并从函数中调用该新类,但随后我陷入了如何将信息获取到另一个选项卡的困境 因此,在本例中,一旦用户在“数据”选项卡中选择了单选按钮,我希望启用“分析”选项卡上相应的按钮 当我取消对getDataType()调用的注释时,我得到以下错误:“AttributeError:模块'DataTab'没有属性'getDataType'”Python 如何检查RadioButton是否已从其他类中检查?,python,pyqt5,Python,Pyqt5,我正在PyQt5中制作一个GUI,其中有多个选项卡。在其中一个选项卡中,用户选择一个单选按钮,其中包含他们正在输入的数据类型 此信息更改了其他选项卡中可用的按钮,我在从原始选项卡类传递此信息时遇到问题。我想看看是否从另一个选项卡选中了单选按钮,如果是,则启用一个按钮 我有一个函数可以根据选择的单选按钮返回字符串,但是当我从另一个选项卡调用getDataType()函数时,会出现错误“AttributeError:module'DataTab'没有属性'getDataType'。” 我尝试将get
这种情况下的一种可能解决方案是使用信号通知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()