我想创建一个可以轻松维护的程序,到目前为止我已经创建了 4 个文件:config
、interTk
、main
和 part1
(稍后扩展并添加part2、part3等)
我的程序所做的是将信息存储在配置文件中,然后使用该信息在 Tkinter 中显示文本。
主要:
import config
import interTk
import part1
import part2
part1.p1()
part2.p2()
第 1 部分:
import config
def p1():
config.str1 = 'hello'
config.str2 = 'bye'
第二部分:
import config
def p2():
config.str1 = 'hello 2'
config.str2 = 'bye 2'
配置:
str1 = ''
str2 = ''
interTk:
from Tkinter import *
import config
class interface:
def __init__(self, root):
root.title("Testing multiple files program")
root.geometry("1200x700")
app = Frame(root)
app.pack(side = 'bottom')
button1 = Button(app, text="Next")
button1.pack()
def text(self, string1, string2):
Label(root, text = string1).pack(expand=1)
Label(root, text = string2).pack(expand=1)
root = Tk()
string1 = config.str1
string2 = config.str2
int_obj = interface(root)
int_obj.text(string1, string2)
root.mainloop()
问题:
当我运行 main.p
y 时,tkinter 应用程序启动,但没有任何文本字段得到更新。我已经调试了代码,并且我做出决定,因为 interTk 是在第 1 部分之前导入的,所以它不会显示第 1 部分的信息。如果我最后导入 interTk 文件,我将无法修改标签,因为它使用最后导入文件传递的信息。
我做错了什么?有更好的方法来实现我的目标吗?
最佳答案
partx.py
import config
def p2():
config.str1.set('hello 2')
config.str2.set('bye 2')
config.py
from Tkinter import StringVar
str1 = StringVar()
str2 = StringVar()
intertk.py
...
from Tkinter import *
root = Tk()
import config
...
class interface:
...
def text(self):
self.text1 = Label(root, textvar = config.str1).pack(expand=1)
self.text2 = Label(root, textvar = config.str2).pack(expand=1)
关于python - 在 Tkinter 中使用文件配置多个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28822163/