如何从另一个文件更改python文件的变量值?

时间:2019-03-08 08:33:36

标签: python python-2.7 tkinter raspberry-pi3

我有两个python文件。我想通过调用模块来更改变量值。

test.py

TypeParameters

test1.py

import tkinter
from tkinter import *
from tkinter import ttk

class Master(Tk):
    def __init__(self,parent):
        Tk.__init__(self,parent)
        self.initialize()


    def initialize(self):
        self.grid()
        self.my_clock = StringVar(self)
        self.my_clock.set("12:05")

        clock =Label(self,textvariable = self.my_clock,height=1,\
                     width=5,fg="black",bg="white",font=("Sans", 32,"bold"))

        clock.grid(column=0,row=0,sticky='SW')




window = Master(None)
window.configure(background="white")
window.mainloop()

我无法从test1.py文件中更改my_clock变量的值。如何从test1.py文件中更改my_clock变量的值。

3 个答案:

答案 0 :(得分:0)

当您这样做:

import test
test.Master(None).my_clock.set("13:05")

您执行以下操作:

  • 导入测试
  • 实例化类Master的新实例(<=>一个新对象)
  • 为新对象的属性my_clock设置新值
  • 然后,此新对象“消失”,因为它没有存储到变量中。

这里有两种可能性:

在测试中实例化对象。py

test.py

class Master(Tk):
    def __init__(self,parent=None):
        (...)

window = Master()
(...)

test2.py

import test
test.window.my_clock.set("13:05")

或使用类变量

test.py

class Master(Tk):
    my_clock = StringVar()
    def __init__(self,parent=None):
        (...)

test2.py

import test
test.Master.my_clock.set("13:05")

答案 1 :(得分:0)

如果您希望程序test1显示该窗口,则它需要调用window.mainloop()

import test
window = test.Master(None)
window.my_clock.set("13:05")
window.mainloop()

答案 2 :(得分:0)

仅当直接运行test.py时(__name__ == "__main__"时),才调用mainloop。导入时,需要再次运行mainloop。将test1.py更改为:

import test

m = test.Master(None)
m.my_clock.set("13:05")

m.mainloop()