根据PyQ中的QRadioButton选项自动启用不同的qpushbutton

2024-09-27 23:28:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我对PyQt很陌生,所以我甚至不知道从哪里开始搜索这个。在

所以我有两个不同的qradiobutton选项,理想情况下对应于两个qpushbutton,每个qpushbutton一个。在

基本上,我有以下代码,我试图通过使用if语句来实现这一点:

def tab1UI(self): 

    mytabfont = QFont('Lucida Sans Unicode', 9)    
    layout = QFormLayout()
    #self.setTabText(0,"My Data")
    self.tab1.setLayout(layout)

    tabdescription = 'To obtain or generate data choose an option below:' 
    # radio options



    label1 = QLabel(tabdescription)
    label1.setFont(mytabfont)
    layout.addWidget(label1)

    radiobtn1 = QRadioButton('Load data from file')
    radiobtn1.setChecked(True)

    #why does my resize not work?
    radiobtn1.resize(100,100)

    radiobtn1.setFont(mytabfont)
    layout.addWidget(radiobtn1)
    loadbtn = QPushButton('Open CSV file...')
    layout.addWidget(loadbtn)

    radiobtn2 = QRadioButton('Generate data')
    radiobtn2.setFont(mytabfont)
    genbtn= QPushButton('Generating matrix...')
    layout.addWidget(radiobtn2)
    layout.addWidget(genbtn)



    if radiobtn1.isChecked():

        # if this option is clicked then this button needs to be activated else it must be de-activated
        loadbtn.setEnabled(True)
        genbtn.setEnabled(False)

    elif radiobtn2.isChecked():

        loadbtn.setEnabled(False)
        genbtn.setEnabled(True)

    else: 

        loadbtn.setEnabled(False)
        genbtn.setEnabled(False)

因此,每当我单击一个单选按钮选项时,我希望其中一个按钮自动变为活动或不活动,而另一个选项被选中。 一定有某种行动要联系起来,但不知道如何去做。在


Tags: selffalsedataif选项layoutlabel1setfont
1条回答
网友
1楼 · 发布于 2024-09-27 23:28:01

当第一次创建按钮时,只运行一次if语句。为了使其工作,您需要在单选按钮检查状态更改时评估这些if语句Qt允许您使用SignalsSlots来执行此操作。当您更改检查状态时,QRadioButton将发出一个信号。您可以连接到此信号并运行更新其他按钮的启用状态的函数。在

def tab1UI(self): 
    mytabfont = QFont('Lucida Sans Unicode', 9)    
    layout = QFormLayout()
    self.tab1.setLayout(layout)

    tabdescription = 'To obtain or generate data choose an option below:' 
    # radio options
    self.label1 = QLabel(tabdescription)
    self.label1.setFont(mytabfont)
    layout.addWidget(self.label1)

    self.radiobtn1 = QRadioButton('Load data from file')
    self.radiobtn1.setChecked(True)

    self.radiobtn1.setFont(mytabfont)
    layout.addWidget(self.radiobtn1)
    self.loadbtn = QPushButton('Open CSV file...')
    layout.addWidget(self.loadbtn)

    self.radiobtn2 = QRadioButton('Generate data')
    self.radiobtn2.setFont(mytabfont)
    self.genbtn= QPushButton('Generating matrix...')
    layout.addWidget(self.radiobtn2)
    layout.addWidget(self.genbtn)

    self.radiobtn1.toggled.connect(self.refresh_button_state)
    self.radiobtn2.toggled.connect(self.refresh_button_state)

    self.refresh_button_state()


def refresh_button_state(self):
    if self.radiobtn1.isChecked():
        self.loadbtn.setEnabled(True)
        self.genbtn.setEnabled(False)
    elif self.radiobtn2.isChecked():
        self.loadbtn.setEnabled(False)
        self.genbtn.setEnabled(True)
    else: 
        self.loadbtn.setEnabled(False)
        self.genbtn.setEnabled(False)

相关问题 更多 >

    热门问题