当前位置: 首页 > 知识库问答 >
问题:

Python tkinter askopenfilename为我工作,现在没有响应

宣瀚
2023-03-14

我正在用Python和tkinter开发一个程序,从用户从他们的目录中添加一个文本文件开始。我已经建立了一个图形用户界面与tkinter提供了一个按钮被按下和一个弹出窗口为他们选择他们的文件-它工作正常,然后突然当我试图运行它会开始"不响应"当我按下按钮意味着启动弹出窗口。

我在Jupyter笔记本中的Windows 10上运行Python 3.7.3;tkinter版本是8.6。我有8 GB的内存,但我没有使用超过80%的内存。

我试过看一些类似的堆栈溢出问题,比如这里和这里的问题:

windows认为tkinter没有反应

Python tkinter askopenfilename没有响应

尝试askopenfilenames()无效;添加root也是如此。更新()或%gui-tk。

以下是我正在使用的代码:

import tkinter as tk
from tkinter import *
from tkinter import messagebox
from tkinter.filedialog import *

root = Tk()

topFrame=Frame(root)
topFrame.pack()

middleFrame=Frame(root, width=200, height=250, 
                  highlightbackground="yellow", 
                  highlightthickness=3, 
                  borderwidth=2, 
                  relief=RAISED)
middleFrame.pack()

bottomFrame=Frame(root)
bottomFrame.pack()

ourdirectory=[]

def load1():
    f1 = askopenfilename(filetypes=(('TXT files','*.txt'), ('All files', '*.*')))
    ourdirectory.append(f1)

mylab = Label(topFrame, text="Hello and welcome!")
mylab.pack()

button = Button(bottomFrame, text="Add File", command=load1)
button.grid(row=5, sticky=W)

root.mainloop()

当按下“添加文件”按钮时,我希望程序会启动一个弹出窗口,用户可以在该窗口中浏览文件目录。取而代之的是,标题文本只是淡出,它没有响应——点击窗口会导致它宣布它停止响应。(这也会一直导致Jupyter内核死亡。)尽管如此,当我运行代码但没有按下“文件添加”按钮就关闭主窗口时,它会很好地关闭,没有任何东西会冻结或中断。

共有1个答案

谷梁建中
2023-03-14

我在运行一些打开、修改和覆盖图像的代码时遇到了同样的问题。一切都按预期进行,直到askopenfilename()突然开始没有响应,也没有打开“文件”对话框窗口。

我试图改变askopenfilename()的初始目录,并从一个单独的文件和命令行调用该方法,但没有成功。

我打开的一个窗口是一个目录(与我使用的不一样),文件缩略图无法加载,文件无法打开。关闭窗口后,屏幕“重新加载”,某些程序打开(例如便签,以前关闭过,但通常在重新启动时打开),方法恢复正常功能。

 类似资料:
  • 我正在尝试在一只海龟和另一只海龟的鱼线之间创建一个碰撞检测系统。问题是,每当我运行程序时,海龟屏幕都没有响应。我正在使用Pycharm和Python。请帮忙!

  • 问题内容: 我有一个发出异步请求的函数。我如何从中返回响应/结果? 我尝试从回调中返回值,以及将结果分配给函数内部的局部变量并返回该局部变量,但这些方法均未真正返回响应(它们都返回或变量的初始值为任意值) 。 使用jQuery函数的示例: 使用node.js的示例: 使用承诺块的示例: 问题答案: →有关使用不同示例的异步行为的更一般说明,请参见 在函数内部修改变量后 , 为什么变量未更改?-异步

  • 我试图提出一个$http.post请求,但我有以下错误: XMLHttpRequest无法加载https://mipage.com/examplephp.请求标头字段Content-Type不允许访问控制允许标头在飞行前响应。 如果我将$http.post更改为$http.get请求,则服务器响应将使用JSON,因此。。我认为这不是CORS的问题。我还在爱奥尼亚项目中放置了一个代理。 这是我的功能

  • 我希望在屏幕旋转期间保留一个复杂的java对象,因此我使该对象可打包并实现了必要的方法: 在writeToParcel(Parcel dest,int flags)方法中,我将一些值保存到“dest”。 在Parcelable.Creator的createFromParcel(Parcel source)方法中,我以正确的顺序从“source”中获取了值,并返回了相应的对象。 然后在Fragmen

  • 这是我的设备 这是我的消息正文作者 我的问题是: 为什么结果似乎不正确?我被放在@JsonRootName(“Facility”)上,并且还启用了包装根特性 我错过了什么

  • 问题内容: 我遇到了这个问题,如果我将其取出并且停止工作,则只能使用该问题。谁能解释我的原因,可能是我做错了,以及如何解决这个问题。 使用setTimeout的示例 JXS 渲染功能 问题答案: 在看到问题的更新之后,我意识到您已经将嵌套的HTML传递给了 render 函数,并且您感兴趣的input元素确实在调用ancestor元素的 componentDidMount 时不可用。如React