Tkinter:第二个脚本打开一个没有请求的新窗口



example1.py:

from tkinter import *
root = Tk()
filename = 'james'
Lbl = Label(root,text="ciao")
Lbl.pack()
root.mainloop()

example2.py:

from example1 import filename
print(filename)

如果我只运行example2.py,为什么python打开tkinter窗口?对我来说,文件名必须在example1.py中,并从example2.py调用。在示例2中,我只调用了文件名变量,而没有调用tkinter窗口。

这是因为Python的标准规则
yup!Python会自动超越您导入的Python文件。在您的案例中,它的example1文件

要防止这种情况,请使用此实例:

if __name__ == '__main__':
root.mainloop()

在您的文件中,请参阅

编辑:

剩下的问题是,不能直接从文件中导入变量

您必须将其存储在如下函数中:
yourFileName

所以您的最终代码将是

示例1.py

from tkinter import *
root = Tk()
filename = 'james'
Lbl = Label(root,text="ciao")
Lbl.pack()
def filenamefunc():
return filename
if __name__ == '__main__':
root.mainloop()

您的example2.py将是

from example1 import filenamefunc
print(filenamefunc)

谢谢

首先,我不知道如何解决您的问题。但我知道你想知道什么。

我知道您有两个python文件("示例1"one_answers"示例2"(。并且您希望从"example 1"导入"filename"。但特金特工作了,你想知道为什么。正确的

导入功能不是拾取工具。

***这意味着如果没有其他数据处理,你就无法获得"文件名"。***

当您调用导入文件"example1"时,python将从头到尾运行"example1"代码并获取文件名。尝试比解释快。

from tkinter import *
filename = 'james'
print(' before ')
root = Tk()
Lbl = Label(root,text="ciao")
Lbl.pack()
root.mainloop()
print(' after ')

像这样修复您的代码并运行"示例2"。首先,您可以在终端中看到"before"文本。tkinter将被运行,然后当你关闭tkinter时,你可以看到"after"文本并处理你的代码print(filename)

example1[文件名保存为'james'>>打印'before'>>运行tkinter主循环><打印'after']>gt;example2[从example1>>文件名为'jame'>打印(文件名(]

不管怎样,这是关于"为什么"运行tkinter的答案。

最新更新