在Python中导入值

时间:2010-11-21 20:48:23

标签: python class import tkinter

我有一个创建窗口的小模块(program1)。我把它导入了我的另一个python程序(program2)。

如何让程序2获得self.x和x在program1中?

这是program1。

import Tkinter

class Class(Tkinter.Tk):

    def __init__(self, parent):

        Tkinter.Tk.__init__(self, parent)
        self.parent = parent

        self.Main()

    def Main(self):
        self.button= Tkinter.Button(self,text='hello')
        self.button.pack()

        self.x = 34
        x = 62





def run():
    app = Class(None)
    app.mainloop()

if __name__ == "__main__":
    run()

2 个答案:

答案 0 :(得分:5)

您可以作为self.x实例的成员访问变量Class

c = Class(parent)
print(c.x)

您无法访问局部变量 - 当方法调用结束时,它会超出范围。

答案 1 :(得分:1)

我不确定'self.x'和'x'的目的是什么,但是在类Class的'Main'方法中需要注意的一件事

def Main(self):
        self.button= Tkinter.Button(self,text='hello')
        self.button.pack()

        self.x = 34
        x = 62

是'x'和'self.x'是两个不同的变量。变量'x'是方法'Main'的局部变量,'self.x'是实例变量。像Mark所说,你可以访问实例变量'self.x'作为Class实例的属性,但方法变量'x'只能从'Main'方法中访问。如果您希望能够访问方法变量'x',那么您可以更改'Main'方法的签名,如下所示。

def Main(self,x=62):
    self.button= Tkinter.Button(self,text='hello')
    self.button.pack()

    self.x = 34
    return x

这样,当您从Class

的实例调用'Main'方法时,可以设置方法变量'x'的值
>> c = Class()
>> c.Main(4)
4

或只保留默认

>> c.Main()
62

和Mark一样,你可以访问实例变量'self.x'

>> c.x
34