首页 > 解决方案 > python文件中的tkinter文本框可见性

问题描述

我有两个 Python 文件,test51.py 和 test61.py

第一个文件有一个带有按钮和文本框的小部件。第二个文件有几个函数可以将文本插入文本框。

当我运行时,我得到“T”未定义 - T 是文本框的名称。

如何使文本框在第二个文件中可见?

第一个文件;测试51.py

#!/usr/bin/python3
from tkinter import *
from test61 import *

def main():
    root = Tk()
    T = Text(root, height=2, width=30)
    T.pack()
    T.insert("1.0", "Just a text Widget\nin two lines\n")
    MyButton = Button(root, text = 'Press Me', command = lambda: test())
    MyButton.pack()
    root.mainloop()

if __name__ == "__main__":
  main()

第二个文件;测试61.py

#!/usr/bin/python3
from tkinter import *
from test51 import *
import time
def test():
    delay = 3.0
    time.sleep(delay)
    print_to_gui('Files currently transferring')
    time.sleep(delay)
    print_to_gui('Currently merging all pdfs')

def print_to_gui(quote):
    T.insert("1.0", quote)

标签: pythontkinter

解决方案


T文件中没有定义test61.py,定义Tglobal. main()您可以阅读本文以了解有关如何在 Python 中跨文件使用变量的更多信息。

这应该有效:

第一个文件;测试51.py

#!/usr/bin/python3
from tkinter import *
import test61

def main():
    root = Tk()
    global T
    T = Text(root, height=2, width=30)
    T.pack()
    T.insert("1.0", "Just a text Widget\nin two lines\n")
    MyButton = Button(root, text = 'Press Me', command = lambda: test61.test())
    MyButton.pack()
    root.mainloop()

if __name__ == "__main__":
    main()

第二个文件;测试61.py

from tkinter import *
import test51
import time

def test():
    delay = 3.0
    time.sleep(delay)
    print_to_gui('Files currently transferring')
    time.sleep(delay)
    print_to_gui('Currently merging all pdfs')

def print_to_gui(quote):
    test51.T.insert("1.0", quote)

if __name__ == "__main__":
    test51.main()

推荐阅读