Python 从pyqt中GUI的另一个类访问实例变量

Python 从pyqt中GUI的另一个类访问实例变量,python,pyqt4,Python,Pyqt4,在我的项目中,我有两个班。我在访问第二类变量时遇到问题。代码结构如下所示 class Ui_Dialog(object): def setupUi(self, Dialog): ------------------- ------------------- ------------------- ------------------- ------------------- def function1(self

在我的项目中,我有两个班。我在访问第二类变量时遇到问题。代码结构如下所示

class Ui_Dialog(object):
    def setupUi(self, Dialog):
       -------------------
       -------------------
       -------------------
       -------------------
       -------------------
    def function1(self):
       self.variable_I_wanna_share="XXXX"
       -------------------
       -------------------
class Ui_MainWindow(QtGui.QMainWindow,Ui_Dialog):
    def setupUi(self, MainWindow):
       -------------------
       -------------------
       -------------------
       -------------------

    def function2(self):
       *Want to get that variable to here*
       -------------------
我从一等继承了二等,但没用。有人能帮我弄清楚吗? 注意-第一类和第二类分别由pyuic4(pyqt)生成
谢谢。

正如有人建议的那样,我认为您可以使用类变量归档所需内容

class Ui_Dialog(object):
    variable_I_wanna_share = "XXXX"
    def setupUi(self, Dialog):
        pass
    def function1(self):
       Ui_Dialog.variable_I_wanna_share="YYYY"

class Ui_MainWindow(Ui_Dialog):
    def setupUi(self, MainWindow):
        pass
    def function2(self):
        #accessing class variable
        print(Ui_Dialog.variable_I_wanna_share)

dialog=Ui_Dialog()

window=Ui_MainWindow()
下面是var类:

In [3]: window.function2()
XXXX
您可以使用function1从任何实例修改类var

In [4]: window.function1()

In [5]: window.function2()
YYYY
In [6]: window.variable_I_wanna_share
Out[6]: 'YYYY'

In [7]: dialog.variable_I_wanna_share
Out[7]: 'YYYY'
您还可以从实例中访问并修改类var

In [4]: window.function1()

In [5]: window.function2()
YYYY
In [6]: window.variable_I_wanna_share
Out[6]: 'YYYY'

In [7]: dialog.variable_I_wanna_share
Out[7]: 'YYYY'
请记住,如果您修改从实例引用它的类var,您将只为该实例修改它

In [8]: dialog.variable_I_wanna_share="ZZZZ"

In [9]: window.variable_I_wanna_share
Out[9]: 'YYYY'

In [10]: dialog.variable_I_wanna_share
Out[10]: 'ZZZZ'

正如有人建议的那样,我认为可以使用类变量归档所需的内容

class Ui_Dialog(object):
    variable_I_wanna_share = "XXXX"
    def setupUi(self, Dialog):
        pass
    def function1(self):
       Ui_Dialog.variable_I_wanna_share="YYYY"

class Ui_MainWindow(Ui_Dialog):
    def setupUi(self, MainWindow):
        pass
    def function2(self):
        #accessing class variable
        print(Ui_Dialog.variable_I_wanna_share)

dialog=Ui_Dialog()

window=Ui_MainWindow()
下面是var类:

In [3]: window.function2()
XXXX
您可以使用function1从任何实例修改类var

In [4]: window.function1()

In [5]: window.function2()
YYYY
In [6]: window.variable_I_wanna_share
Out[6]: 'YYYY'

In [7]: dialog.variable_I_wanna_share
Out[7]: 'YYYY'
您还可以从实例中访问并修改类var

In [4]: window.function1()

In [5]: window.function2()
YYYY
In [6]: window.variable_I_wanna_share
Out[6]: 'YYYY'

In [7]: dialog.variable_I_wanna_share
Out[7]: 'YYYY'
请记住,如果您修改从实例引用它的类var,您将只为该实例修改它

In [8]: dialog.variable_I_wanna_share="ZZZZ"

In [9]: window.variable_I_wanna_share
Out[9]: 'YYYY'

In [10]: dialog.variable_I_wanna_share
Out[10]: 'ZZZZ'

您使用的是实例变量,而不是类变量,因此必须从实例访问它。无论如何,在使用
function1
之前,写入的
self.variable\u I\u wannna\u share
将不存在。当您从函数2继承时,您可能需要在函数2中执行此操作。例如函数2上的
self.variable\u I\u want\u share
?使用类变量如何?例如,在您的
\uuuu init\uuuu()
中,我在函数2上键入了
self.variable\u I\u want\u share
。出现错误
AttributeError:“Ui\u MainWindow”对象没有属性“variable\u I\u want\u share”
您使用的是实例变量,而不是类变量,因此必须从实例访问它。无论如何,在使用
function1
之前,写入的
self.variable\u I\u wannna\u share
将不存在。当您从函数2继承时,您可能需要在函数2中执行此操作。例如函数2上的
self.variable\u I\u want\u share
?使用类变量如何?例如,在您的
\uuuu init\uuuu()
中,我在函数2上键入了
self.variable\u I\u want\u share
。出现错误
AttributeError:'Ui\u MainWindow'对象没有属性'variable\u I\u want\u share'