Как изменить вызываемую функцию, когда я нажимаю QPushButton, в соответствии с QRadioButton? - PullRequest
0 голосов
/ 13 июня 2018

У меня три QRadioButtons.Только один может быть выбран за один раз.У меня есть QPushButton, который должен вызывать другую функцию, в соответствии с выбранным QRadioButton.

Пример: Если выбран QRadioButton # 1, кнопка выполняет функцию # 1 при нажатии.Если выбран QRadioButton # 2, та же самая кнопка выполняет функцию # 2 и т. Д.

Ответы [ 3 ]

0 голосов
/ 13 июня 2018

Мне пришлось немного изменить его для моего кода, и это сработало.Спасибо!

...
class Window(QWidget):
    def __init__(self):
    ...
    def init_ui(self):
        ...    
        self.bnt.clicked.connect(lambda: self.decision_maker())
        ...

    def decision_maker(self):
        if self.radiobutton1.isChecked():
            do_something_1()
        elif self.radiobutton2.isChecked():
            do_something_2()
        ...
0 голосов
/ 14 июня 2018

Попробуйте это:

from PyQt5 import QtGui,QtCore,QtWidgets
import sys
class Win(QtWidgets.QWidget):
   def __init__(self):
      super().__init__()
      self.initUI()
   def initUI(self):
      self.vbox = QtWidgets.QVBoxLayout(self)
      self.rb1 = QtWidgets.QRadioButton('1',self)
      self.rb2 = QtWidgets.QRadioButton('2',self)
      self.rb3 = QtWidgets.QRadioButton('3',self)
      self.btn = QtWidgets.QPushButton('PushMe',self)
      self.btn.clicked.connect(self.func)
      self.vbox.addWidget(self.rb1)
      self.vbox.addWidget(self.rb2)
      self.vbox.addWidget(self.rb3)
      self.vbox.addWidget(self.btn)
      self.show()

   def func(self):
      for i in self.findChildren(QtWidgets.QRadioButton):
         if i.isChecked():
            self.doAction(str(i.text()))

   def doAction(self,text):
      if text == '1':
         print('You like to be the first')
      if text == '2':
         print('You like to be the second')
      if text == '3':
         print('You like to be the third')
if __name__ == '__main__':
   app = QtWidgets.QApplication(sys.argv)
   gui = Win()
   sys.exit(app.exec_())

enter image description here

0 голосов
/ 13 июня 2018

Сделай свой выбор.Попробуйте:

import sys
from PyQt5.QtWidgets import (QLabel, QRadioButton, QPushButton, QVBoxLayout, QApplication, QWidget)


class Window(QWidget):

    def __init__(self):
        super().__init__()

        self.init_ui()

    def init_ui(self):
        self.lbl  = QLabel('Which do you like best?')
        self.code = QRadioButton('PyQt5')
        self.dog  = QRadioButton('Dogs')
        self.cat  = QRadioButton('Cats')
        self.btn  = QPushButton('Select')

        layout = QVBoxLayout()
        layout.addWidget(self.lbl)
        layout.addWidget(self.code)
        layout.addWidget(self.dog)
        layout.addWidget(self.cat)
        layout.addWidget(self.btn)

        self.setLayout(layout)
        self.setWindowTitle('PyQt5 QRadioButton')

        self.btn.clicked.connect(lambda: self.btn_clk(self.code.isChecked(), self.lbl))
        self.btn.clicked.connect(lambda: self.btn_clk(self.dog.isChecked(), self.lbl))
        self.btn.clicked.connect(lambda: self.btn_clk(self.cat.isChecked(), self.lbl))

        self.show()

    def btn_clk(self, chk, lbl):
        if self.code.isChecked():
            lbl.setText('It`s a good choice')
        elif self.dog.isChecked():
            lbl.setText('I guess you like dogs')
        else:
            lbl.setText('So its cats for you')

app = QApplication(sys.argv)
a_window = Window()
sys.exit(app.exec_())

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...