python - 这是 Tkinter 中的错误吗?
问题描述
我发现 Tkinter 小部件聚焦行为有一个非常特殊的行为。以下面的代码为例:
import tkinter as tk
class Test(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master)
# Create Canvas
canvas_width = master.winfo_screenwidth()
canvas_height = master.winfo_screenheight()
self.canvas = tk.Canvas(master, width=canvas_width, height=canvas_height)
self.canvas.pack()
root = tk.Tk()
frame = Test(root)
frame.pack()
while True:
frame.focus_set()
print(root.focus_get())
root.update_idletasks()
root.update()
print(root.focus_get())
倒数第三行在循环的每个交互中输出,.
这很奇怪。你会期望它输出类似.!frame
. 它变得更奇怪了,因为如果您将画布的高度更改height=500
为:
self.canvas = tk.Canvas(master, width=canvas_width, height=500)
它工作得很好并且输出.!frame
。我继续对此进行试验,我发现设置height=1176
及以下工作正常,但所有height=1177
及以上的值最终在输出中变为.
. 我怀疑这与我的分辨率有关,但是无论我将宽度设置多高,它都不会像我提高高度时那样引发问题。我的决定1920x1200
只是以防万一。对这种奇怪的行为有什么想法吗?
解决方案
推荐阅读
- javascript - 每个 Observable 的值发射运行一次操作
- angular - 展示
- php - 安装的 php-curl 仍然是 PHP 致命错误:调用未定义的函数 curl_init()
- r - diff() 后不同数量的替换和数据行应用于数据帧列表
- csh - “&!”的功能 在 csh
- wpf - 如何在 WPF 中的 MouseOver 上突出显示菜单项
- haskell - 为什么 foldr 有一个 'b' 类型的变量?
- c++ - c++中使用抽象基类的多重继承
- javascript - 从单选按钮获取文本
- android - file.exists() 在不同的活动中为同一个文件返回不同的值