2016-08-30 9 views
0

サブクラスからGUI要素を読み書きするための助けが必要です。 コード:Pyqt5がサブクラスのGUI要素にアクセスします

UI element: 
[] doABC 

# main.py 
import mySubclass 

class myAppController(QtWidgets.QMainWindow): 

    def __init__(self): 
     super(myAppController, self).__init__() 

     # load view 
     uifile = 'myApp.ui' 
     uic.loadUi(uifile, self) 

     # I can access UI elements like that 
     self.pb_Verify.clicked.connect(self.slot_verify) # for slot in main.py 

     # Calling slot from mySubclass 
     self.pb_EliminateVerifErrors.clicked.connect(mySubclass.fixErrors) 

# Show Main window 
if __name__ == '__main__': 
    app = QtWidgets.QApplication(sys.argv) 
    window = myAppController() 
    window.show() 
    sys.exit(app.exec_()) 

# mySubclass.py - separate file 
def fixErrors(self): 
    # here I want to check state of checkbox 
    if doABC.isChecked(): 

問題はself.doABC.isChecked()、この場合には動作していないということです。 私はまたからselfまたはself.doABCを含むスロットコールの追加パラメータを渡そうとしましたが、この方法では機能しません。また、main.doABCまたはsuper().doABCにアクセスすることはできません。

Googleで多くの検索を完了しましたが、私の場合には何も適合しません。

私のレベルはGUIプログラミングの初心者です。だから私は熱くなっているとは知らないこともあります。

答えて

0

あなたの問題は、mysubclassがdoABCを参照する必要があることです。

main.pyファイル

#!python3 
# main.py 
import mySubclass 
import sys 
from PyQt5 import QtWidgets, uic 


class myAppController(QtWidgets.QMainWindow): 

    def __init__(self): 
     super(myAppController, self).__init__() 

     # load view 
     uifile = 'myApp.ui' 
     uic.loadUi(uifile, self) 

     # I can access UI elements like that 
     # self.pb_Verify.clicked.connect(self.slot_verify) # for slot in main.py 

     # Calling slot from mySubclass 
     self.pb_EliminateVerifErrors.clicked.connect(self.EliminateErrors) 

    def EliminateErrors(self): 
     mySubclass.fixErrors(self.doABC) 

# Show Main window 
if __name__ == '__main__': 
    app = QtWidgets.QApplication(sys.argv) 
    window = myAppController() 
    window.show() 
    sys.exit(app.exec_()) 
ここ

Iクラス機能を追加した信号によって呼び出されるとdoABCへの参照を渡すされる:ここ

は実施例です。それは、クラスの関数ではないよう

# mySubclass.py - separate file 
def fixErrors(doABC): 
    # here I want to check state of checkbox 
    if doABC.isChecked(): 
     print("Works!") 

mySubclass.pyは、ここで私は、関数の引数から自己を削除しました。

これだけです!あなたはかなり近くにいた!

関連する問題