my window image 经过一些研究后,我在特金特制作了一个圆角窗口
from tkinter import *
from tkinter.ttk import Style,Frame as fp
root = Tk()
root.geometry("600x400+250+250")
root.overrideredirect(True)
root.wm_attributes("-transparentcolor", "#d307e9")
root.wm_attributes("-topmost", True)
#This is made with ttkframe from image and the image is in base64 encoded fromat
data='''
iVBORw0KGgoAAAANSUhEUgAAAEAAAAAvCAYAAABTy8x
RAAACxElEQVRoge2aS2/aQBSFs+NRCEkVhUJfolISNW
nSllcIeF91lT6WqdT8gK6y6+/Exobwsne2MWA8+9NFk
1SEAY3Nyx66OCsk5Ptp7twz996takjHJmtr3R+wbv0H
sLA/i+iQEibk/R6UtIX6Cwv1V/359dyCkrIg7/UgxQ1
Uwz4BIEYN1F9aaL+3oZYdaAJZjSoEaslB63gIJWnNDc
Q1AGnHROeDvbqAGYA0j4YQo8ZyAYgRHe1THwVOAdHI9
JcDQEqYUC9WeMznUCc7ghhZIIDargmtsv7A3KhbcJgh
zAQgxQ1oZYKb4m9cFa5xVfh5p2v8eCQ//f6reINOdsR
0QU4HENbRLf499pf5b8jlcoHRp/xnaAJB83DoHcBtpv
9wpIIKQBMIagnTPQAxaozlfZABdLIj9wAamcHYpXKZ/
7r2oLwC0AQCaXu6R6ACeFzygg6g9Xb6XTABQIwZE2Ul
yCmgCQRqmbADaLzucwdAEwjEGD0NJgDQ7C4PAJRnFhs
AmuXlAcA0TzAOIKxTbS8PANpnNgOACL8AugW6HxgDIE
Z06uOCBwBqydlwAFNKISOAYBshTSDQKnMBCP4J2HgAc
6YABwBYLkG+yyALgI03Qjxb4SMWKxzS0T7j9DGUYnwM
8focllifw2Kc1hAJthFy1RCh3QNBB9A6dtESq4ZoTdF
gp4C0Pb01Tm+LRzhqi3/00BavhvgZjEheBiP3pqhbCP
ho7GAwM/jZAEL/hqNf8t/XHpRbAJ3cvMPRO9V2TGjlS
XvsZ3XzI1QXMR5/OAkxA+p5MBYk2qe2q70h9h2hsI7m
4dC3yxJqmUBJ0+3uYgDcl8iYgdaJ7RsQ6oWD2zcDz9t
i3vcEwzrkZA/tdzbUkrM6IBUC9dxB82CA2u7sErdcAB
QgUtyAvNeDnOxBSVlQ0gtQyoK830PtqQnxiY8WJXnRx
gP4AyU7Jb13S9JyAAAAAElFTkSuQmCC
'''
FrameImage = PhotoImage("border", data=data,master=root)
T_style=Style()
T_style.element_create("RoundedFrame",
"image", FrameImage,
border=20, sticky="nsew")
T_style.layout("RoundedFrame",
[("RoundedFrame", {"sticky": "nsew"})])
t = fp(root,style="RoundedFrame", padding=10)
t.pack(fill='both',expand=True)
f=Frame(t,width=581,height=25,bg='red')
f.place(x=-1,y=0)
def loop1(evt):
global xp,yp
xp=evt.x
yp=evt.y
def loop2(evt):
global xp,yp
xp=None
yp=None
def loop(evt):
deltax=evt.x-xp
deltay=evt.y-yp
x=root.winfo_x()+deltax
y=root.winfo_y()+deltay
root.geometry(f"+{x}+{y}")
f.bind('<B1-Motion>',loop)
f.bind('<ButtonPress-1>',loop1)
f.bind('<ButtonRelease-1>',loop2)
def minm():
root.overrideredirect(False)
root.iconify()
root.update_idletasks()
b=Button(t,text='minimize',command=minm).pack()
def good(event):
root.overrideredirect(True)
root.bind("<Map>",good)
root.mainloop()
但我无法通过按钮最小化它,而且在运行时它甚至不会出现在windows任务栏中。但是在对stackoverflow网站进行了一些研究之后,我成功地管理了这个可移动窗口。我希望它能像普通窗口一样工作。 任何帮助都将不胜感激。 谢谢大家!
您可以使用
Toplevel
窗口(在屏幕可视区域中不可见)在任务栏中假装root
窗口。然后基于此不可见Toplevel
窗口的Map
或Unmap
事件来显示或隐藏root
窗口以下是基于您的修改程序:
相关问题 更多 >
编程相关推荐