gpt4 book ai didi

python - Tkinter,调用 "wm_iconbitmap"和 "resizable"后闪烁窗口

转载 作者:太空宇宙 更新时间:2023-11-03 18:42:57 25 4
gpt4 key购买 nike

每次我为窗口管理器创建窗口集和图标并更改窗口的某些其他属性(例如“可调整大小”)时,它都会“闪烁”。我想这是因为再次调用窗口管理器并重做窗口。有什么办法可以称之为“无声”变化或类似的东西吗?我的研究并不是很幸运。

如果您想亲自查看,您将需要一个图标文件。我上传了我正在使用的图标here 。如果您不习惯下载它,您还可以在系统目录中找到合适的图标文件。搜索“*.ico”。任何 16x16 图标都可以。

#! coding=utf-8
import tkinter as tk
import os

def CENTER_WINDOW(window,parent):
""" Verschiebt ein Fenster auf dem Bildschirm"""
# get window size
window.update_idletasks()
w = window.winfo_width()
h = window.winfo_height()

# get parent size
if parent=="screen":
p_x , p_y = window.winfo_screenwidth(), window.winfo_screenheight()
p_ox, p_oy = 0,0
else:
parent.update_idletasks()
p_x , p_y = parent.geometry().split("+")[0].split("x")
p_x , p_y = int(p_x) , int(p_y)
p_ox, p_oy = int(parent.geometry().split("+")[1]),int(parent.geometry().split("+")[2])

# calculate position x, y
x = p_x/2 + p_ox - w/2
y = p_y/2 + p_oy - h/2

window.geometry('%dx%d+%d+%d' % (w,h,x,y))
window.update_idletasks()

def top():
T = tk.Toplevel()
T.wm_iconbitmap( os.path.abspath("icon.ico"))
T.resizable(width=tk.FALSE, height=tk.FALSE)
CENTER_WINDOW(T,root)

root = tk.Tk()
root.geometry("100x50")
but = tk.Button(root,text="Toplevel",command=top)
CENTER_WINDOW(root,"screen")
but.pack()

root.mainloop()

最佳答案

大致轮廓:

  • 创建窗口后立即调用withdraw
  • 进行调整
  • 当您准备好显示窗口时,调用 deiconify

关于python - Tkinter,调用 "wm_iconbitmap"和 "resizable"后闪烁窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20122955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com