gpt4 book ai didi

python - 遇到 Tkinter 透明度问题

转载 作者:行者123 更新时间:2023-11-28 21:30:14 35 4
gpt4 key购买 nike

我在 TKinter 中使顶级小部件淡入时遇到问题。由于某种原因,小部件根本不会淡入,然后它会出现在任务栏中,但只有在单击运行此命令的按钮两次后才会出现(它不应该出现在任务栏中)。

负责这些问题的代码。

    Alpha = 0.0
w1.attributes("-alpha", Alpha)
w1.wm_geometry("+" + str(X) + "+" + str(M))
while 1.0 > Alpha :
Alpha = Alpha + 0.01
w1.attributes("-alpha", Alpha)
sleep(0.005)

这是 Windows 7 上的 python 2.6。

最佳答案

问题是您的代码永远不允许窗口重绘自身。 sleep 会导致程序停止,因此不会进入事件循环,而正是事件循环导致窗口被绘制。

不要休眠,而是利用事件循环并每 N 毫秒更新一次属性,直到获得所需的 alpha 透明度。

这是一个在 mac 上运行的示例。我认为它也适用于 Windows。

import Tkinter as tk

class App:
def __init__(self):
self.root = tk.Tk()
self.count = 0
b=tk.Button(text="create window", command=self.create_window)
b.pack()
self.root.mainloop()

def create_window(self):
self.count += 1
t=FadeToplevel(self.root)
t.wm_title("Window %s" % self.count)
t.fade_in()


class FadeToplevel(tk.Toplevel):
'''A toplevel widget with the ability to fade in'''
def __init__(self, *args, **kwargs):
tk.Toplevel.__init__(self, *args, **kwargs)
self.attributes("-alpha", 0.0)

def fade_in(self):
alpha = self.attributes("-alpha")
alpha = min(alpha + .01, 1.0)
self.attributes("-alpha", alpha)
if alpha < 1.0:
self.after(10, self.fade_in)

if __name__ == "__main__":
app=App()

关于python - 遇到 Tkinter 透明度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3399882/

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