python - 在 Tkinter 中使用文件配置多个页面

标签 python class python-2.7 tkinter singleton

我想创建一个可以轻松维护的程序,到目前为止我已经创建了 4 个文件:configinterTkmainpart1 (稍后扩展并添加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.py 时,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/

相关文章:

python - 使用 Dialogflow、FB Messenger 和 Python 发起对话

java - 类的词法包含类型

python - 如何检查输入是否为二进制格式(1 和 0)?

python - 如何从子包中进行绝对导入?

python-2.7 - python-igraph 和 networkx 之间的关系

python - 程序显示为几位数

python - Gunicorn 多处理中的原子代码/仅在工作程序 1 中运行代码?

python - 如何获得不区分大小写的 Python SET

javascript - 如何用内部对象构造对象

java - 将 Java applet 项目导入 netbeans 将无法正常工作,即使手动设置,Netbeans 也拒绝识别甚至找不到主类