具有 Overrideredirect 和全屏功能的 Tkinter Entry 小部件

2024-01-05

我希望这不是重复的帖子,但我还没有在谷歌和论坛上看到我的问题的答案。

基本上由于某种原因,当我创建一个 Entry 小部件时;当我通过 self.attributes('-fullscreen', True) 将 GUI 设置为全屏时以及启用 self.overrideredirect(True) 时,它将不允许用户从键盘进行输入。 (我要使用信息亭模式样式 GUI,因此标准用户无法退出界面)

我在这里浏览了这个链接(tkinter:无法进入条目小部件 https://stackoverflow.com/q/24499711/8168134)并发现他们的问题相似但不完全相同。我知道 Mac 上存在一些问题,但必须有其他方法来执行此任务。当我在运行 Raspbian 的 Raspberry Pi 上运行此程序时,也出现了此问题。当全屏未处于活动状态但覆盖重定向处于活动状态时,它会起作用;当覆盖重定向未激活但全屏激活时,它也可以工作。

我尝试使用 focus_force() 和 focus_set() 为小部件及其所在的框架设置焦点,但这也不起作用。

下面提供了我的相关代码。如果需要更多我的代码,请告诉我。这段代码的目的是一个用户名/密码登录方法,它将在我的程序的其余部分中被调用。

我在 Mac OS Sierra 10.12.5 上运行 PyCharm Community Edition 2017.2。提前致谢!

CODE

    def admin(self, root_1):
        master = tk.Tk()
        text = ""

        master.title("Administrator Login")
        w_0, h_0 = master.winfo_screenwidth(), master.winfo_screenheight()
        master.geometry("%dx%d+0+0" % (w_0, h_0))

        f1 = tk.Frame(master, width=w_0, height=h_0, background="red")
        f2 = tk.Frame(master, width=w_0, height=h_0, background="blue")

        f1.pack(fill="both", expand=True)
        f2.place(in_=f1, anchor="c", relx=.5, rely=.5)

        master.wm_attributes('-topmost', 'True')
        master.overrideredirect(True)

        instruction_label = tk.Label(f2, text="Please type your username and password", fg="red", bg="blue",
                                     font=("Helvetica", 26))
        instruction_label.grid(row=0, columnspan=2, padx=20, pady=20)
        user_label = tk.Label(f2, text="Username", font=("Helvetica", 16), bg="red")
        user_entry = tk.Entry(f2, bg="red")
        pass_label = tk.Label(f2, text="Password", font=("Helvetica", 16), bg="red")
        pass_entry = tk.Entry(f2, bg="red", show="*")

        user_label.grid(row=1, column=0, sticky=("E", "W"), padx=20, pady=10)
        user_entry.grid(row=1, column=1, sticky="W", padx=20, pady=10)
        pass_label.grid(row=2, column=0, sticky=("E", "W"), padx=20, pady=10)
        pass_entry.grid(row=2, column=1, sticky="W", padx=20, pady=10)

        user_entry.focus_force()

        submit_button = tk.Button(f2, text="Submit", command=lambda: correct_login(text), bg="red", width = 20, height = 4)
        submit_button.grid(row=3, column=0, sticky=("N", "S", "E"), padx=20, pady=20)
        quit_button = tk.Button(f2, text="Quit", command=destroy, bg="red", width = 20, height = 4)
        quit_button.grid(row=3, column=1, sticky=("N", "S", "W"), padx=20, pady=20)

        user_entry.delete(0)
        user_entry.insert(0, "")

        pass_entry.delete(0)
        pass_entry.insert(0, "")

        return

我在您的代码中看到一个应该修复的危险信号(它不会解决您的问题,但它是免费建议)。你正在传入root到你的管理方法,然后你调用 Tk()again创建您正在使用的顶层。这不是一个好的做法。只需使用命令 Toplevel 即可。请参阅下面我的示例代码。

对于 MAC 而言,您所看到的关于 overrideredirect 的帖子是一致的(并且显然是正确的)。顶层窗口上的此属性告诉窗口管理器忽略无父窗口上的某些事件。显然,MAC 不会向无父级顶级窗口内的小部件发送按键和释放事件。

解决此问题的一种方法是允许窗口成为父级(正常),但将“WM_DELETE_WINDOW”协议设置为拦截窗口关闭的函数或方法。我只发布您的管理方法的顶部部分。

def admin(self, root_1):
    master = Toplevel()
    text = ""

    master.title("Administrator Login")
    w_0, h_0 = master.winfo_screenwidth(), master.winfo_screenheight()
    master.geometry("%dx%d+0+0" % (w_0, h_0))
    master.protocol("WM_DELETE_WINDOW", self.dontDeleteWindow)


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

具有 Overrideredirect 和全屏功能的 Tkinter Entry 小部件 的相关文章

  • Python PAM 模块的安全问题?

    我有兴趣编写一个 PAM 模块 该模块将利用流行的 Unix 登录身份验证机制 我过去的大部分编程经验都是使用 Python 进行的 并且我正在交互的系统已经有一个 Python API 我用谷歌搜索发现pam python http pa
  • 如何生成给定范围内的回文数列表?

    假设范围是 1 X 120 这是我尝试过的 gt gt gt def isPalindrome s check if a number is a Palindrome s str s return s s 1 gt gt gt def ge
  • 如何在android上的python kivy中关闭应用程序后使服务继续工作

    我希望我的服务在关闭应用程序后继续工作 但我做不到 我听说我应该使用startForeground 但如何在Python中做到这一点呢 应用程序代码 from kivy app import App from kivy uix floatl
  • DreamPie 不适用于 Python 3.2

    我最喜欢的 Python shell 是DreamPie http dreampie sourceforge net 我想将它与 Python 3 2 一起使用 我使用了 添加解释器 DreamPie 应用程序并添加了 Python 3 2
  • 如何打印没有类型的defaultdict变量?

    在下面的代码中 from collections import defaultdict confusion proba dict defaultdict float for i in xrange 10 confusion proba di
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • Python 多处理示例不起作用

    我正在尝试学习如何使用multiprocessing但我无法让它发挥作用 这是代码文档 http docs python org 2 library multiprocessing html from multiprocessing imp
  • Spark的distinct()函数是否仅对每个分区中的不同元组进行洗牌

    据我了解 distinct 哈希分区 RDD 来识别唯一键 但它是否针对仅移动每个分区的不同元组进行了优化 想象一个具有以下分区的 RDD 1 2 2 1 4 2 2 1 3 3 5 4 5 5 5 在此 RDD 上的不同键上 所有重复键
  • __del__ 真的是析构函数吗?

    我主要用 C 做事情 其中 析构函数方法实际上是为了销毁所获取的资源 最近我开始使用python 这真的很有趣而且很棒 我开始了解到它有像java一样的GC 因此 没有过分强调对象所有权 构造和销毁 据我所知 init 方法对我来说在 py
  • 运行多个 scrapy 蜘蛛的正确方法

    我只是尝试使用在同一进程中运行多个蜘蛛新的 scrapy 文档 http doc scrapy org en 1 0 topics practices html但我得到 AttributeError CrawlerProcess objec
  • 在 NumPy 中获取 ndarray 的索引和值

    我有一个 ndarrayA任意维数N 我想创建一个数组B元组 数组或列表 其中第一个N每个元组中的元素是索引 最后一个元素是该索引的值A 例如 A array 1 2 3 4 5 6 Then B 0 0 1 0 1 2 0 2 3 1 0
  • Python 中的二进制缓冲区

    在Python中你可以使用StringIO https docs python org library struct html用于字符数据的类似文件的缓冲区 内存映射文件 https docs python org library mmap
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • Numpy 优化

    我有一个根据条件分配值的函数 我的数据集大小通常在 30 50k 范围内 我不确定这是否是使用 numpy 的正确方法 但是当数字超过 5k 时 它会变得非常慢 有没有更好的方法让它更快 import numpy as np N 5000
  • 如何改变Python中特定打印字母的颜色?

    我正在尝试做一个简短的测验 并且想将错误答案显示为红色 欢迎来到我的测验 您想开始吗 是的 祝你好运 法国的首都是哪里 法国 随机答案不正确的答案 我正在尝试将其显示为红色 我的代码是 print Welcome to my Quiz be
  • Python 3 中“map”类型的对象没有 len()

    我在使用 Python 3 时遇到问题 我得到了 Python 2 7 代码 目前我正在尝试更新它 我收到错误 类型错误 map 类型的对象没有 len 在这部分 str len seed candidates 在我像这样初始化它之前 se
  • 为美国东部以外地区的 Cloudwatch 警报发送短信?

    AWS 似乎没有为美国东部以外的 SNS 主题订阅者提供 SMS 作为协议 我想连接我的 CloudWatch 警报并在发生故障时接收短信 但无法将其发送到 SMS YES 经过一番挖掘后 我能够让它发挥作用 它比仅仅选择一个主题或输入闹钟
  • 对输入求 Keras 模型的导数返回全零

    所以我有一个 Keras 模型 我想将模型的梯度应用于其输入 这就是我所做的 import tensorflow as tf from keras models import Sequential from keras layers imp
  • 使用基于正则表达式的部分匹配来选择 Pandas 数据帧的子数据帧

    我有一个 Pandas 数据框 它有两列 一列 进程参数 列 包含字符串 另一列 值 列 包含相应的浮点值 我需要过滤出部分匹配列 过程参数 中的一组键的子数据帧 并提取与这些键匹配的数据帧的两列 df pd DataFrame Proce
  • 改变字典的哈希函数

    按照此question https stackoverflow com questions 37100390 towards understanding dictionaries 我们知道两个不同的字典 dict 1 and dict 2例

随机推荐

  • 将本地 sqlite 文件同步到 iCloud

    我将 iOS 应用程序中的一些数据直接存储在本地 sqlite 文件中 我选择这样做而不是 CoreData 因为数据需要与非 Apple 平台兼容 现在 我正在尝试找出通过 iCloud 同步此文件的最佳方法 我知道由于多种原因您无法直接
  • 使用 Schematron 和 xsltproc 验证 XSD 架构

    我在验证 SXD 模式与 Schematron 相结合时遇到困难 按照本文中描述的步骤操作guide http www topologi com resources schtrn xsd paper htm我已经在之间合并了 schemat
  • T-SQL 如何从一列中选择没有重复值的行?

    我有一个有 2 列的表ID ID PROJ CSR 该表的内容是 ID ID PROJ CSR 747 222 lt 785 102 786 222 lt 787 223 788 224 我想选择 ID 但如果 ID PROJ CSR 中的
  • 如何更改标签文字?

    我尝试更改标签文本但没有任何效果 function changeText lblTxt var lblAjaxUpdate Key find class label finds the label no problem lblAjaxUpd
  • dataTables 将 css 类分配给分页包装器

    我有一个数据表 其中包含最基本的初始化代码 但是 我需要为出现在表格底部的分页分配一个自定义分页 css 类 我想分配 Twitter 引导分页类 我该怎么做 这是我的代码 document ready function Build the
  • scp 上的管道损坏错误

    我可以通过 ssh 进入我的 ubuntu 盒子 而且我已经scp将我的应用程序的一个版本放到服务器上 但是当我运行时 scp MaryBaked tar gz email protected cdn cgi l email protect
  • 如何从代码中删除缩进?

    让我们考虑这个代码示例 不要看代码 而要看缩进 protected function hashPassword password salt nuts if nuts nuts Kohana config a11n gt nuts passw
  • 在完整树的深度优先和广度优先遍历之间转换的函数

    问题 考虑一棵具有 l 层的完整 k 叉树 节点在广度优先遍历中按其等级标记 按照深度优先遍历中遍历标签的顺序计算标签列表 例如 对于 3 层的二叉树 所需的列表为 0 1 3 7 8 4 9 10 2 5 11 12 6 13 14 一种
  • 如何在 C++ 中构造 ISO 8601 日期时间?

    我正在使用 Azure REST API 他们使用它来创建表存储的请求正文 DateTime UtcNow ToString o 其产生 2012 03 02T04 07 34 0218628Z 它被称为 往返 显然它是一个 ISO 标准
  • 在哪里可以找到 php_svn.dll [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我最近升级到 Windows 版 PHP 5 3 5 我在以前的版本中使用了 subversion 扩
  • 时间序列数据框 python 上的 ARIMA 建模

    我正在尝试使用 ARIMA 模型进行预测 我是新手 我试图绘制我的数据集 每小时数据 的seasonal decompose 下面是图 我想理解这些情节 简短的描述会有帮助 我看到最初没有趋势 一段时间后有上升趋势 我不确定我说的对吗 我想
  • Ruby 中的排序稳定吗?

    Is sort在 Ruby 中稳定吗 也就是说 对于并列的元素sort 它们之间的相对顺序是否保留了原始顺序 例如 给定 a id a int 3 id b int 1 id c int 2 id d int 0 id e int 1 id
  • 如何在Hadoop中自定义Writable类?

    我正在尝试实现可写类 但我不知道如果我的类中有嵌套对象 例如列表等 如何实现可写类 任何人都可以帮助我吗 谢谢 public class StorageClass implements Writable public String xStr
  • 处理时出现用户级 KeeperException

    我知道这已经是之前问过 https stackoverflow com questions 30495057 zookeeper having keeperexception but kafka able to create topics
  • php 按值字母顺序对数组进行排序

    正如标题所示 我想在 php 中按字母顺序对数组进行排序 arr array k gt pig e gt dog 会成为 arr array e gt dog k gt pig 有任何想法吗 编辑 这是我想要排序的实际数组 Array 0
  • 匿名 lambda 直接引用自身

    cheme 或 doscheme 的任何方言是否都有一种 self 运算符 以便匿名 lambda 可以自行重复 而无需执行类似 Y 组合器或在 letrec 等中命名的操作 就像是 lambda n cond n 0 1 else n s
  • 为什么 goto 在 Java 和其他高级编程语言中被认为是邪恶的? [复制]

    这个问题在这里已经有答案了 可能的重复 java中有goto语句吗 https stackoverflow com questions 2545103 is there a goto statement in java 为什么 goto 在
  • 运行“dotnet test”时显示“dotnet vstest”输出接收器的输出

    Edit 以下是最初以标题发布的前一个问题 xunit 在控制台中运行时显示 ITestOutputHelper 输出 经过调查 见评论 这个问题仍然非常相关 需要答案 但似乎应该向vstest框架和输出接收器而不是 xunit 现在的具体
  • 在 Chart.js 中设置每个标签的特定颜色

    我正在尝试为使用制作的图表设置颜色chart js https www chartjs org 图书馆 我需要为每个数据标签指定特定的颜色 但是当特定标签的数据为零时 颜色会变得混乱 看起来该库删除了零数据标签和不同颜色的标签 例如 当数据
  • 具有 Overrideredirect 和全屏功能的 Tkinter Entry 小部件

    我希望这不是重复的帖子 但我还没有在谷歌和论坛上看到我的问题的答案 基本上由于某种原因 当我创建一个 Entry 小部件时 当我通过 self attributes fullscreen True 将 GUI 设置为全屏时以及启用 self