Python中文
首页
教程
问答
标签
搜索
登录
注册
通过在MSWindows下调整大小来解决性能问题
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>受这个<a href="https://stackoverflow.com/a/22424245/13629335">question</a>的启发,我想为我的根窗口编写我自己的大小调整函数。 但是我注意到我的代码显示了一些性能问题。如果您快速调整它的大小,您可以看到窗口没有如我所愿找到其高度提示,它会“结巴”。<em>(更像是一个摆动)</em></p> <p>有人知道为什么会这样吗?我最好的猜测是<code>tkinter</code>事件处理程序对它来说太慢了。 也许我做的数学不是最快的方法</p> <p>也许我应该说我在不同的地方试过几次。我尝试过的另一种方法是使用<code>after</code>方法,但它使情况变得更糟</p> <p>下面是一个示例代码:</p> <pre><code>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() </code></pre> <p><a href="https://stackoverflow.com/questions/22421888/tkinter-windows-without-title-bar-but-resizable/64077176#64077176">full example</a></p> <h2>更新</h2> <p>似乎性能问题与微软<em>有关,而且是一个<a href="https://stackoverflow.com/q/53000291/13629335">well known issue</a>让大多数微软开发人员疯狂的问题</p> <p><strong>抖动/闪烁/跳跃</strong></p> <p><a href="https://i.stack.imgur.com/R2sLZ.gif" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/R2sLZ.gif" alt="enter image description here"/></a></p> <p><strong>黑色边框</strong></p> <p><a href="https://i.stack.imgur.com/0ihm4.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/0ihm4.png" alt="enter image description here"/></a></p> <p><strong>双图像/快速闪烁\跳转</strong></p> <p><a href="https://i.stack.imgur.com/vVuO0.gif" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/vVuO0.gif" alt="enter image description here"/></a></p> <p>我的mashine是:</p> <blockquote> <p>Windows 10 Home; x64-base,Intel(R) Core(TM) i3-2120 @ 3.30GHz, 3300 MHz, 2Cores</p> </blockquote> <p>与</p> <blockquote> <p>Python 3.7.2 and tkinter 8.6</p> </blockquote>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>我能够通过在OnMotion方法的开头添加<code>update()</code>函数来解决这个问题</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
无法使用Django/mongoengine连接到MongoDB(身份验证失败)
5 回答
无法使用Django\u mssql\u后端迁移到外部hos
1 回答
无法使用Django&Python3.4连接到MySql
6 回答
无法使用Django+nginx上载媒体文件
6 回答
无法使用Django1.6导入名称模式
1 回答
无法使用Django1.7和mongodb登录管理站点
7 回答
无法使用Djangoadmin创建项目,进程使用了错误的路径,因为我事先安装了错误的Python
5 回答
无法使用Djangockedi验证CBV中的字段
1 回答
无法使用Djangocketditor上载图像(错误400)
10 回答
无法使用Djangocron进行函数调用
1 回答
无法使用Djangofiler djang上载文件
3 回答
无法使用Djangokronos
8 回答
无法使用Djangomssql provid
2 回答
无法使用Djangomssql连接到带有Django 1.11的MS SQL Server 2016
6 回答
无法使用Djangomssq迁移Django数据库
8 回答
无法使用Djangonox创建用户
10 回答
无法使用Djangopyodb从Django查询SQL Server
7 回答
无法使用Djangopython3ldap连接到ldap
2 回答
无法使用Djangoredis连接到redis
6 回答
无法使用Django中的FK创建新表
2 回答