从python中的另一个类访问UI元素

时间:2017-08-09 03:36:40

标签: python pyqt

实施例

function.py

class testClass(object):
    def functionA(self):
        #doSomething
        self.Qlabel.clear()

main.py

class mainClass(object):
    def __init__(self, parent = #something):
        #initialize something

        super(mainClass, self).__init__(parent)
        self.setupUi(self)
        self.Qlabel.clicked.connect(self.testFunc)


    def testFunc(self):

        import function as FT
        FT.testClass().functionA(self)

我尝试将我的PyQt function.py连接到main.py。它一直给我这个TypeError:functionA()只取1个参数(给定2个)。

如果我带走了自我'因此它FT.testClass().functionA(),然后我得到了AttributeError:' testClass'对象没有属性' Qlabel'

我在PyQt : accessing elements from outside the class中看到它只使用obj而不是使用类。

我想了解如何解决这个问题,以及为什么我之前的方法无法解决问题。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

在functionA的定义中再创一个Entry。 对于例如

def functionA(self, mainClassObj):
    #doSomething
    self.Qlabel.clear()

错误的原因是你用一个额外的参数调用testclass函数。你用一个参数定义它。

注意:您必须启动Qlabel:

def functionA(self, mainClassObj): #doSomething from PyQt5.QtWidgets import QLabel Qlabel().clear() 这应该适合你。

答案 1 :(得分:0)

我设法让它运转起来。问题基本上在function.py,我使用self.Qlabel.clear()代替object.Qlabel.clear()

这是工作代码。

function.py

class testClass(object):
    def functionA(self, object):
        #doSomething
        object.Qlabel.clear()

main.py

class mainClass(object):
    def __init__(self, parent = something):
        #initialize something
        super(mainClass, self).__init__(parent)
        self.setupUi(self)

        self.Qlabel.clicked.connect(self.testFunc)


    def testFunc(self):
        import function as FT
        FT.testClass().functionA(self)