我在使用qt designer制作的表单中有两个radioButtons
,我现在正在用pyqt编程。我希望在选择lineEdit
1时将radioButton
的文本更改为“无线电1”,并在选择radioButton
2时将其更改为“无线电2”。我怎么能实现这个目标呢?
答案 0 :(得分:9)
这是一个简单的例子。每个QRadioButton
都与它自己的功能相关联。您可以将它们连接到同一个功能并管理通过它发生的事情,但我认为最好演示信号和插槽是如何工作的。
有关详细信息,请查看PyQt4 documentation for new style signals and slots。如果将多个信号连接到同一个插槽,使用QObject
的{{3}}方法有时很有用,但在QRadioButton
的情况下,检查.sender()
可能更容易你想要的按钮的方法。
import sys
from PyQt4.QtGui import QApplication, QWidget, QVBoxLayout, \
QLineEdit, QRadioButton
class Widget(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.widget_layout = QVBoxLayout()
self.radio1 = QRadioButton('Radio 1')
self.radio2 = QRadioButton('Radio 2')
self.line_edit = QLineEdit()
self.radio1.toggled.connect(self.radio1_clicked)
self.radio2.toggled.connect(self.radio2_clicked)
self.widget_layout.addWidget(self.radio1)
self.widget_layout.addWidget(self.radio2)
self.widget_layout.addWidget(self.line_edit)
self.setLayout(self.widget_layout)
def radio1_clicked(self, enabled):
if enabled:
self.line_edit.setText('Radio 1')
def radio2_clicked(self, enabled):
if enabled:
self.line_edit.setText('Radio 2')
if __name__ == '__main__':
app = QApplication(sys.argv)
widget = Widget()
widget.show()
sys.exit(app.exec_())