私はradioButtons
qtデザイナーを使用して作成されたフォームに2つあり、現在pyqtでプログラミングしています。lineEdit
1を選択すると「ラジオ1 」radioButton
、2を選択すると「ラジオ2」にテキストを変更したいradioButton
です。どうすればこれを達成できますか?
質問する
14996 次
1 に答える
10
これが簡単な例です。それぞれQRadioButton
が独自の機能に接続されています。両方を同じ機能に接続して、それによって何が起こるかを管理することもできますが、信号とスロットがどのように機能するかを示すのが最善だと思いました。
詳細については、PyQt4のドキュメントで新しいスタイルの信号とスロットを確認してください。複数の信号を同じスロットに接続する場合は、の.sender()
メソッドを使用すると便利なQObject
場合がありますが、その場合は、目的のボタンの.isChecked()QRadioButton
メソッドをチェックする方がおそらく簡単です。
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_())
于 2013-02-27T17:42:15.843 に答える