我知道的是,如果我想创建一个没有标题栏的窗口,我可以写
root = Tk()
........
root.overrideredirect(1)
但我也希望窗口可以调整大小。有什么解决办法吗?
(仅供参考:我正在 Windows 机器上工作,尽管我不确定这是否真的重要。如果有独立于操作系统的解决方案,那就完美了,但如果至少有一个适用于 Windows 的解决方案,我很高兴。)
问题是窗户is可以调整大小,但是当你打开时overrideredirect
您会丢失任何可以抓住以调整窗口大小的标题或边缘。唯一的解决方案是自行调整大小。您可以添加自己的边框,或添加当鼠标靠近边缘时起作用的鼠标绑定。
这个答案展示了如何移动这样的窗口:Python/Tkinter:鼠标拖动无边框窗口,例如。覆盖直接(1) https://stackoverflow.com/q/4055267/7432
这是一个说明调整大小的简短示例。它只在 OSX 上进行了测试,但应该可以在任何平台上运行。它使用 python2,尽管它应该可以通过更改 import 语句来使用 python3。
import Tkinter as tk
import ttk
class Example(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.floater = FloatingWindow(self)
class FloatingWindow(tk.Toplevel):
def __init__(self, *args, **kwargs):
tk.Toplevel.__init__(self, *args, **kwargs)
self.overrideredirect(True)
self.wm_geometry("400x400")
self.label = tk.Label(self, text="Grab the lower-right corner to resize")
self.label.pack(side="top", fill="both", expand=True)
self.grip = ttk.Sizegrip(self)
self.grip.place(relx=1.0, rely=1.0, anchor="se")
self.grip.lift(self.label)
self.grip.bind("<B1-Motion>", self.OnMotion)
def OnMotion(self, event):
x1 = self.winfo_pointerx()
y1 = self.winfo_pointery()
x0 = self.winfo_rootx()
y0 = self.winfo_rooty()
self.geometry("%sx%s" % ((x1-x0),(y1-y0)))
return
app=Example()
app.mainloop()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)