Tkinter filedialog 破坏条目小部件

2023-11-30

tl;dr: 当应用程序调用时tkinter.filedialog, entry字段无法正确聚焦。

长解释:

初始化 tkinter 应用程序时,entry默认情况下启用字段。他们的状态是tk.ENABLED,可以通过滚动字段来关注它们tab,最重要的是,可以单击它们来选择字段。

由于某种原因,此行为通过调用被破坏tkinter.filedialog。如果一种方法tkinter.filedialog被称为,例如askdirectory or askopenfile(), the entry场仍将有tk.ENABLED状态,并且背景将被正确设置样式,但单击输入字段将不会插入光标或选择该字段。当然,打字不会注册。

这可以通过切换到不同的窗口然后切换回来来解决。然而,文件对话框窗口(正确地)将用户直接返回到主窗口,因此用户总是看到一个似乎被锁定的主窗口。

看这个例子:

import tkinter as tk
from tkinter import filedialog

BR8K = True

root = tk.Tk()

if BR8K:
    filedialog.askdirectory()

entry = tk.Entry(root, takefocus=True, highlightthickness=2)
entry.grid(sticky="WE")


root.mainloop()

在这里,如果以下情况,代码将正常运行:BR8K is False,并且错误地如果BR8K is True.

(注意:在生产环境中,这将是面向对象的。该问题在面向对象的环境中仍然存在。)


这是由于在第一次到达 mainloop() 之前调用对话框窗口而导致的已知问题。

解决这个问题最简单的方法是添加update_idletask()在对话框之前。

尝试这个:

import tkinter as tk
from tkinter import filedialog

BR8K = True

root = tk.Tk()
# By adding this you avoid the focus breaking issue of calling dialog before the mainloop() has had its first loop.
root.update_idletasks() 

if BR8K:
    filedialog.askdirectory()

entry = tk.Entry(root, takefocus=True, highlightthickness=2)
entry.grid(sticky="WE")


root.mainloop()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tkinter filedialog 破坏条目小部件 的相关文章

随机推荐

  • AJAX 返回带有输出的 HTML 代码

    尝试了一些解决方案后this和许多其他问题我无法弄清楚我的代码中的确切问题是什么 我的代码 document ready function botname blur function ajax type POST url tukaiexot
  • vscode g++ 找不到 .cpp 定义文件

    我正在尝试使用多个 cpp 和 hpp 文件编译 C 示例 但 g 找不到任何成员函数定义 主要 cpp include
  • 从 wagtail 外部上传 Wagtail 图像

    在无法子类化的 Django 模型中Page 我想转换现有的 ImageField 以使用 Wagtail 图像 我将该字段重新定义为 avatar models ForeignKey wagtailimages Image null Tr
  • 多个计数器的联合

    查找列表并集的最佳方法是什么 就可读性和效率而言 Counters 例如 我的列表可能如下所示 counters Counter a 6 b 3 c 1 Counter a 2 b 5 Counter a 4 b 4 我想计算并集 即cou
  • 返回 Javascript 文件中定义的所有函数

    对于以下脚本 如何编写一个函数以数组形式返回所有脚本函数 我想返回脚本中定义的函数的数组 以便我可以打印脚本中定义的每个函数的摘要 function getAllFunctions this is the function I m tryi
  • IE - 本地和远程部署的系统之间的行为差​​异

    我在 IE 中遇到有线问题 当我浏览本地部署的 asp net mvc 应用程序时 一切都按预期工作 当我浏览部署在不同主机上的系统时 会出现一些恼人的差异 在这两种情况下 我都使用本地安装在我的主计算机上的同一个 IE 实例 假设我在cs
  • “AttributeError:部分初始化的模块‘pytube’没有属性‘YouTube’(很可能是由于循环导入)”[重复]

    这个问题在这里已经有答案了 这是代码 import pytube as p video url input Enter the link youtube p YouTube video url filters youtube streams
  • 无法删除终端中的特殊命名文件

    有些程序使我的根目录成为虚拟文件 例如 1 2 3 n 我运行失败 rm 1 and too rm 1 终端认为 1 是选项 如何删除这些文件在终端 您可以使用rm 1 指当前目录 并且由于参数不以破折号开头 因此不会将其解释为选项
  • Java 中忽略 SIGINT

    我正在为 Unix 上的本机共享库使用 Java 包装器 JRI 本机库 R 的基于 C 的 REPL 实现 在内部处理 SIGINT 使用 Java 包装器时 当我使用以下命令向进程发送 SIGINT 时 Java 应用程序将退出 杀死
  • 如何将不支持的密码套件(不包含在默认密码套件中)添加到客户端问候消息

    要求客户端应支持以下TLS加密密码套件 private String cipherSuites new String TLS DHE RSA WITH AES 256 GCM SHA384 TLS DHE RSA WITH AES 256
  • CloudBlockBlob.DownloadToStream 与 DownloadRangeToStream

    尝试使用 ASP NET azure SDK 从 blob 存储下载图像 我在另一篇文章中读到 DownloadToStream 确实将 blob 分解成更小的块并并行下载它们以提高性能 我相信这就是 DownloadRangeToStre
  • JVM 和 HotSpot 之间的区别?

    HotSpot 到底是什么 它与 JVM 和 OpenJDK 有何关系 这是图书馆吗 它到底有什么作用 另外 OpenJDK 和 HotSpot 有什么区别 Java 虚拟机的确切定义在Java虚拟机规范 JVM 根据定义是虚拟机 即模拟真
  • θ(n) 和 O(n) 有什么区别?

    有时我会看到 n 带有奇怪的 符号 中间有一些东西 有时只是 O n 这只是因为没有人知道如何输入这个符号而懒得打字 还是它有不同的含义 简短说明 如果算法的大小为 g n 则意味着随着 n 输入大小 变大 算法的运行时间与 g n 成正比
  • Kotlin RC NoClassDefFoundError

    将 kotlin 更新到 RC 1036 后 我面临一个奇怪的问题 我的代码甚至没有编译和打包 当构建通过并且应用程序启动时我得到ClassNotFoundException Didn t find class example myappl
  • 查看任务的活动堆栈

    我刚刚开始开发一个简单的 Android 应用程序 同时我仍在学习该平台 我正在使用带有 ADT 插件 0 9 6 的 Eclipse IDE 我需要知道是否可以查看Activity与任务关联的堆栈 有没有办法通过 DDMS 工具或任何其他
  • 从 UIAlertView 获取文本

    似乎缺少了一些东西 但是下面的代码正在生成nil两者的值title and title1 即使它正确启动正确的警报类型并且不指示任何警告或错误 这种实施可能存在什么问题UIAlertView UIAlertView alert UIAler
  • 使用 MOSS Web 服务的 SharePoint 文档的权限

    我们需要检索对文档具有读取权限的用户组 我们知道文档的 URL 以下权限服务提供具有访问权限的组 但它需要站点 URL 或列表 URL 我们有一个文档 URL 是否有任何其他服务提供文档的权限 或者 如果我们知道文档 URL 是否有办法找到
  • 仅使用标准 java api(缩进和 Doctype 定位)即可漂亮地打印 javax.xml.transform.Transformer 的输出

    使用以下简单代码 package test import java io import javax xml transform import javax xml transform stream public class TestOutpu
  • CSS 改变输入是否有值的样式

    我有一个带有占位符的输入元素 它应该始终出现 wrapper position relative input font size 14px height 40px placeholder position absolute font siz
  • Tkinter filedialog 破坏条目小部件

    tl dr 当应用程序调用时tkinter filedialog entry字段无法正确聚焦 长解释 初始化 tkinter 应用程序时 entry默认情况下启用字段 他们的状态是tk ENABLED 可以通过滚动字段来关注它们tab 最重