2

私はradioButtonsqtデザイナーを使用して作成されたフォームに2つあり、現在pyqtでプログラミングしています。lineEdit1を選択すると「ラジオ1 」radioButton、2を選択すると「ラジオ2」にテキストを変更したいradioButtonです。どうすればこれを達成できますか?

4

1 に答える 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 に答える