如何实现一个单一的输出功能id radiobutton
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class App(QDialog):
def __init__(self):
super().__init__()
self.title = 'Тест'
self.resize(400, 400)
self.setFont(QFont('Times', 13))
layout = QVBoxLayout()
self.radio_box_1 = QRadioButton('1', self)
self.radio_box_2 = QRadioButton('2', self)
button = QPushButton()
button.setText('Вывод')
button.clicked.connect(self.print_names)
layout.addWidget(self.radio_box_1)
layout.addWidget(self.radio_box_2)
layout.addWidget(button)
self.setLayout(layout)
self.button_group = QButtonGroup()
self.button_group.addButton(self.radio_box_1, 1)
self.button_group.addButton(self.radio_box_2, 2)
self.button_group.buttonClicked.connect(lambda: a.clear())
self.button_group.buttonClicked.connect(lambda number_id: a.append(self.button_group.id(number_id)))
def print_names(self):
print(a)
if __name__ == '__main__':
a = []
app = QApplication(sys.argv)
ex = App()
ex.show()
sys.exit(app.exec_())
我需要它不在函数中self.button_group.buttonClicked,并且lambda所有内容都将写在一个函数中(因为我认为在逻辑上这是必要的,而不是写 2 lambda),如果可能的话,你能否举一个如何实现它的例子。
代替
只需使用
而是
简单地
当您编写不带括号的函数或方法的名称时,它就是函数或方法的对象——正是您所需要的。
在这种情况下使用
checkedId替换方法lambda number_id: a.append(self.button_group.id(number_id))并有助于将这些动作组合成一个功能
或如@MarianD 建议的那样,但有更正确的选项