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的答案。