在用户选择文件后,什么可能导致Tkinter/Python中的打开文件对话框窗口真的很慢关闭?

use*_*339 11 python macos tkinter python-3.x

我可以在我的程序中执行以下操作以获得一个简单的打开文件对话框并打印所选的文件路径.不幸的是,当用户选择文件时,它不会马上消失,并且会停留超过5分钟. 在执行更多python代码之前,如何在选择之后立即使窗口消失?在Tkinter代码之后,我尝试使用OpenCV导入一些视频,我认为这可能会导致速度变慢.我的OpenCV代码确实正确执行,我不认为单独存在问题(即某些交互导致错误并且可能在Tkinter包装其GUI对话框之前启动了一些密集的进程).

import Tkinter as Tk
import cv2
from tkFileDialog import askopenfilename
root = Tk.Tk()
root.withdraw() # we don't want a full GUI, so keep the root window from appearing
filename = askopenfilename() # show an "Open" dialog box and return the path to the selected file
print(filename)

cap = cv2.VideoCapture('video.mp4')   # this works just fine 
Run Code Online (Sandbox Code Playgroud)

如果有用,我使用的是Python 2.7和Mac OS X 10.9.

[编辑:这对所有人来说似乎不是问题,但它适合我,所以我正在改变问题,也包括调试问题.在Tkinter打开文件对话框窗口关闭GUI之前,我不希望执行任何操作.似乎我的程序中的后续步骤(一个开放的简历视频导入)可能以某种方式导致Tkinter减慢速度,所以我想确保它在任何新进程启动之前关闭.再次,Tkinter窗口确实在5分钟后关闭...]

Wil*_*l S 15

我在使用Tkinter对话框时遇到了一些麻烦.和你一样,在我选择文件后,对话框就在那里.我没有尝试离开它很长时间,它可能已经消失了5分钟,因为你说你做了.经过大量随机实验,我发现,在调用root.update() 之前askopenfilename()线似乎解决它.

作为参考,这是我测试的代码:

import sys
from tkinter import *
from tkinter import filedialog

#instantiate a Tk window
root = Tk()

#set the title of the window
root.title('Tk test')

#dunno what this does, fixes askopenfilename if I use it.
root.update()

print(filedialog.askopenfilename(title='dialogue? surely.'))
Run Code Online (Sandbox Code Playgroud)

  • 为我工作.+1 (3认同)