首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数不能多次使用tkinter askopenfilename()函数

函数不能多次使用tkinter askopenfilename()函数
EN

Stack Overflow用户
提问于 2021-11-28 09:06:11
回答 1查看 386关注 0票数 1

我试图运行这个函数,只要条目是1或2,但是在第一个有效输入(1或2)之后,第二个输入什么也不做,似乎被循环卡住了。

(函数打印选定的文件名+输入号)

代码语言:javascript
复制
from tkinter import Tk
from tkinter.filedialog import askopenfilename
Tk().withdraw() # there's no need to open the full GUI

def my_filebrowser(command):
    filename = askopenfilename()
    print(filename, command)

while True:

    command = int(input('enter command: '))

    if command == 1:
        my_filebrowser(command)

    elif command == 2:
        my_filebrowser(command)

    else:
        break

如何更改代码以便多次使用tkinter文件浏览器(askopenfilename()函数)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-28 09:43:47

您可以简单地创建和销毁根窗口来实现这一点,但这并不是一种高性能的方法。

代码语言:javascript
复制
from tkinter import Tk
from tkinter.filedialog import askopenfilename


def my_filebrowser(command):
    root = Tk(); root.withdraw()
    filename = askopenfilename()
    print(filename, command)
    root.destroy()

while True:

    command = int(input('enter command: '))

    if command == 1:
        my_filebrowser(command)

    elif command == 2:
        my_filebrowser(command)

    else:
        break

您可以修改这段代码,使文件在屏幕的前面和中间。我还为透明添加了alpha,您甚至注意到了发生了什么:

代码语言:javascript
复制
def my_filebrowser(command):
    root = Tk(); root.attributes('-alpha',0.01)
    root.attributes('-topmost',True)
    root.tk.eval(f'tk::PlaceWindow {root._w} center')
    root.withdraw()
    filename = askopenfilename()
    root.destroy()
    print(filename, command)  
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70141950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档