2017-01-25 5 views
0

最近qtを使ってPython GUIを構築しました。解決策が見つからない2つの問題があります。以下のコードはビルドする必要があるサンプルです。Qt DesignerのUI(Python)からJSON

1:縦型レイアウトのラジオボタンのリストからどのラジオボタンをクリックしたかを確認します。 GUIでは、レイアウト内で利用できる他のラジオボタンのうちの1つだけを選択します。クリックしたものはどのように認識されますか?

2:JSONオブジェクトにクリックされた値を追加したいと思いますが、これがif then if if simple if文です。それが複雑な場合を除いて、正しい方向に私を押してください。

私はあなたがこのような何か(テストしていませんが)必要だと思う
# -*- coding: utf-8 -*- 

# Form implementation generated from reading ui file 'test.ui' 
# 
# Created by: PyQt5 UI code generator 5.6 
# 
# WARNING! All changes made in this file will be lost! 

from PyQt5 import QtCore, QtGui, QtWidgets 

class Ui_Dialog(object): 
    def setupUi(self, Dialog): 
     Dialog.setObjectName("Dialog") 
     Dialog.resize(596, 466) 
     self.verticalLayoutWidget = QtWidgets.QWidget(Dialog) 
     self.verticalLayoutWidget.setGeometry(QtCore.QRect(180, 70, 61, 80)) 
     self.verticalLayoutWidget.setObjectName("verticalLayoutWidget") 
     self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget) 
     self.verticalLayout.setContentsMargins(0, 0, 0, 0) 
     self.verticalLayout.setObjectName("verticalLayout") 
     self.that = QtWidgets.QRadioButton(self.verticalLayoutWidget) 
     self.that.setObjectName("that") 
     self.verticalLayout.addWidget(self.that) 
     self.thi = QtWidgets.QRadioButton(self.verticalLayoutWidget) 
     self.thi.setObjectName("thi") 
     self.verticalLayout.addWidget(self.thi) 
     self.sure = QtWidgets.QRadioButton(self.verticalLayoutWidget) 
     self.sure.setObjectName("sure") 
     self.verticalLayout.addWidget(self.sure) 

     self.retranslateUi(Dialog) 
     QtCore.QMetaObject.connectSlotsByName(Dialog) 

    def retranslateUi(self, Dialog): 
     _translate = QtCore.QCoreApplication.translate 
     Dialog.setWindowTitle(_translate("Dialog", "Dialog")) 
     self.that.setText(_translate("Dialog", "that")) 
     self.thi.setText(_translate("Dialog", "this")) 
     self.sure.setText(_translate("Dialog", "sure")) 


if __name__ == "__main__": 
    import sys 
    app = QtWidgets.QApplication(sys.argv) 
    Dialog = QtWidgets.QDialog() 
    ui = Ui_Dialog() 
    ui.setupUi(Dialog) 
    Dialog.show() 
    sys.exit(app.exec_()) 

答えて

0

関数を作成し、可能になりますボタンをQButtonGroupにグループ化し、buttonClicked signalに接続して、クリックされたボタンを取得します。

Qt Designerですべてのボタンを選択し(Ctrl +クリック)、ボタンの1つを右クリックして[ボタングループに割り当て] - [新規ボタングループ]を選択するだけです。これにより、新しいボタングループオブジェクトが作成され、すべてのボタンが自動的にボタンオブジェクトに追加されます。

再生成あなたのGUIモジュールの後、あなたは、このようsomehtingを行うことができます。私は見てみましょう

ui.radioButtonGroup.buttonClicked.connect(radioButtonClicked) 

def radioButtonClicked(button): 
    print(button.text()) 
+0

これは最善の選択肢のように思えますが、それはおそらく私が使用するものです。ありがとう! –

+0

大問題だから、これを使うとGUI全体がクラッシュする。私は、ポップアップは、Pythonが動作を停止したと言う。これまでにこの問題が発生しましたか? Python 3.5.2とqt5での作業 –

+0

@ Haq.H。 pyuicでguiモジュールを再生成しましたか?もしそうでなければ、問題は自分のコードのどこかにあるはずです。 – ekhumoro

0

# Set Default 
self.thi.setChecked(True) 

# create a signal 
QtCore.QObject.connect(self.that, 
         QtCore.SIGNAL("toggled(bool)"), 
         self.radio_clicked) 

、この使用はQt Designerを解決するための良い方法はあり

def self.radio_clicked(self): 
    print 'ive been clicked' # work from here 
+0

、私はそれが使用されているものQtCore.SIGNALを使用せずに、しかし、同様の結論に達しましたために? –

関連する問題