python-从另一个文件访问PyQt Gui元素

我正在学习PyQt且来自网页设计,因此请原谅这个必须有非常明显答案的问题.因此,我正在构建一个PyQt应用程序,我想将方法​​扩展到多个文件以对应GUI的不同部分.如何从fileB.py访问位于fileA.py中的文本框. :

#fileA.py
import sys
from PyQt4 import QtGui, QtCore
from gui1 import Ui_MainWindow
import fileB

class MyApp(QtGui.QMainWindow, Ui_MainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        Ui_MainWindow.__init__(self)
        self.setupUi(self)


if __name__ == "__main__":
        app = QtGui.QApplication(sys.argv)
        window = MyApp()
        window.show()

        #This works all fine
        def pressed():
            window.plainTextEdit.appendPlainText("Hello")


        window.pushButton.pressed.connect(pressed)


        window.button2.pressed.connect(fileB.func3)
        sys.exit(app.exec_())    

现在,在此文件中,我想使用fileA.py中的文本框

#fileB.py
import fileA

    #How do I access window.plainTextEdit from fileA.py
def func3():
    print "hello"
    fileA.window.plainTextEdit.appendPlainText("Hello")

我究竟做错了什么?如果不是这样,将功能扩展到多个文件的最佳方法是什么?

感谢您抽出宝贵时间阅读本文.

解决方法:

您可以利用Python的类继承,如下所示:

fileA.py:

import sys
from PyQt4 import QtGui, QtCore
from gui1 import Ui_MainWindow
import fileB

class MyApp(fileB.MyApp, QtGui.QMainWindow):
  def __init__(self):
     self.MyMethod()
     # Should print 'foo'

fileB.py:

import sys
from PyQt4 import QtGui, QtCore
from gui1 import Ui_MainWindow

class MyApp(QtGui.QMainWindow):
  def MyMethod(self):
    print 'foo'
上一篇:得到Class类的几种方式


下一篇:如何使用QWebView和PySide双重缓冲WebKit页面?