我一直在使用tkinter提供一个文件对话框(在python3.6中),允许用户选择一个目录。当它是同一模块中的子函数时,它可以正常工作,但是如果我将该子函数移到一个单独的模块中,然后尝试从该模块导入它,它将不再工作。相反,当文件对话框弹出时,代码只是挂起,但它从未出现。你知道吗
工作代码: 如果我运行main函数
from tkinter import Tk
from tkinter.filedialog import askdirectory
def SelectDirectory():
# start up the tk stuff to have a file directory popup
print('start')
root = Tk()
print('postroot')
root.withdraw()
print('postwithdraw')
# let the user pick a folder
basepath = askdirectory(title='Please select a folder')
print('postselection')
root.destroy()
print('postdestroy')
return basepath
def main():
ans = SelectDirectory()
print(ans)
如果我把它放在另一个模块中并从该模块导入,那么它将一直打印到“postdrach”,然后挂起。你知道吗
你知道吗子模块py地址:
from tkinter import Tk
from tkinter.filedialog import askdirectory
def SelectDirectory():
# start up the tk stuff to have a file directory popup
print('start')
root = Tk()
print('postroot')
root.withdraw()
print('postwithdraw')
# let the user pick a folder
basepath = askdirectory(title='Please select a folder')
print('postselection')
root.destroy()
print('postdestroy')
return basepath
然后运行以下命令:
from submod import SelectDirectory
def main():
ans = SelectDirectory()
print(ans)
它永远不会通过“postdrach”,文件对话框也不会弹出。你知道吗
有人知道我做错了什么吗?我认为这与tkinter窗口没有出现有关,因为它不是主模块,但是有什么方法可以超越它吗?你知道吗
你的两个版本都不起作用。两者都给出
'module' object is not callable
。你知道吗你必须使用
而不是
然后这两个版本都起作用了。你知道吗
也许在
Tk.Tk()
中有两个Tk
看起来很奇怪,但在Tk.Tk()
中我们通常使用小写tk
而不是Tk
然后你有
相关问题 更多 >
编程相关推荐