我有两个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变量的值。
答案 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()