- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
受此启发 question ,我想为我的根窗口编写我自己的调整大小函数。
但我只是注意到我的代码显示了一些性能问题。如果你快速调整它的大小,你可以看到窗口没有像我希望的那样找到它的高度提示,它“断断续续”。(更像是一个摆动)
有人知道为什么会这样吗?我最好的猜测是 tkinter
事件处理程序对它来说太慢了。
也许我做的数学不是最快的方法。
也许我应该说我确实尝试过 update_idletasks()
在不同的地点,也有好几次。我尝试过的另一种方法是使用 after
方法,但它使情况变得更糟。
无论如何,这是一个示例代码:
import tkinter as tk
class FloatingWindow(tk.Tk):
def __init__(self):
super().__init__()
self.overrideredirect(True)
self.center()
self.label = tk.Label(self, text="Grab the upper-right corner to resize")
self.label.pack(side="top", fill="both", expand=True)
self.grip2 = tk.Label(self,bg='blue')
self.grip2.place(relx=1.0, rely=0, anchor="ne")
self.grip2.bind("<B1-Motion>",self.OnMotion)
def OnMotion(self, event):
abs_x = self.winfo_pointerx() - self.winfo_rootx()
abs_y = self.winfo_pointery() - self.winfo_rooty()
if abs_x >0:
x = self.winfo_rootx()
y = self.winfo_rooty()+abs_y
height = self.winfo_height()-abs_y
if height >0:
self.geometry("%dx%d+%d+%d" % (abs_x,height,
x,y))
def center(self):
width = 300
height = 300
screen_width = self.winfo_screenwidth()
screen_height = self.winfo_screenheight()
x_coordinate = (screen_width/2) - (width/2)
y_coordinate = (screen_height/2) - (height/2)
self.geometry("%dx%d+%d+%d" % (width, height,
x_coordinate, y_coordinate))
app=FloatingWindow()
app.mainloop()
full example
time.sleep(0.175)
self.update_idletasks()
这样我有更少但更长的斯托特间隔。此外,您可以看到这里发生了什么。
Windows 10 Home; x64-base,Intel(R) Core(TM) i3-2120 @ 3.30GHz, 3300MHz, 2Cores
Python 3.7.2 and tkinter 8.6
最佳答案
我能够通过添加 update()
来解决这个问题。在 OnMotion 方法开头的函数
关于python - overrideredirect(1) 之后的 Tkinter 自定义调整大小事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64066592/
我开始明白 overrideredirect 有助于删除默认的窗口装饰,如工具栏。它的其他用途是什么?我不是很确定,也找不到太多文档。 我正在使用 Mac。使用 tkinter 我想获得保持最大尺寸且
删除 tkinter 默认窗口设置后,我想添加移动和调整窗口大小的功能。以下是我从几个地方获取并调整的关键代码片段。我试图做到这一点,以便当鼠标距窗口顶部低于 199 像素时,事件响应是调整窗口大小(
我有一个 tinter Toplevel 窗口,我想在没有框架或标题栏的情况下出现并且稍微透明,然后当鼠标移动到窗口上时固定。为此,我同时使用了 Toplevel.overrideredirect(T
受此启发 question ,我想为我的根窗口编写我自己的调整大小函数。 但我只是注意到我的代码显示了一些性能问题。如果你快速调整它的大小,你可以看到窗口没有像我希望的那样找到它的高度提示,它“断断续
我目前正在 Linux 上使用 Tkinter 和 Python 2.7,我想知道是否有一种方法可以在不使用 overrideredirect( 1)。 我有自己的关闭按钮,overrideredir
我希望以下程序在 上退出事件。 from tkinter import * root = Tk() root.overrideredirect(True) root.bind('', lambda
[我之前的帖子已关闭,表示它是重复的,但我仍然没有答案] 我正在尝试创建一个没有标题栏但带有按钮的窗口。这些按钮将打开/运行某些程序(打开网络浏览器、重新启动计算机等)。我希望此窗口始终保留在屏幕上并
我正在用 Python 编写一个带有 Tkinter UI 的程序。我想要一个没有标题栏的小窗口。该窗口必须接收键盘输入。我不挑剔这是以 Entry 小部件的形式还是仅绑定(bind)到 KeyPre
我是一名优秀的程序员,十分优秀!