有没有办法用Tkinter创建非标准窗口?我希望屏幕上有浮动图像,里面有Tkinter小部件。想想像Growl for Mac,iPad上的Siri,Mac OS音量/亮度改变边框等等。如果这是不可能的,有没有办法摆脱窗口顶部的标题和关闭/最小化/调整大小按钮,并要求脚本完成(或修饰符-Q键击)关闭?
答案 0 :(得分:1)
wm_overrideredirect将删除标准窗口边框。你仍然会被一个矩形窗户困住。您可以使用wm_attributes调整窗口的透明度(查找alpha
属性),但这仅适用于Windows和Mac。
已尝试使用tcl / tk塑造窗口,您可能可以使用Tkinter,但它需要编译一些代码。请参阅tcl&#39 wrs上的Managed and shaped toplevel。
答案 1 :(得分:0)
app.overrideredirect(True)
其中app = Tk()
从这里开始你会遇到一个不是顶层的窗户;它也没有任务栏位置; 解决这个问题我们可以使用:app.attributes('-topmost', 1)
但即使是现在你只有一个矩形;您需要创建 自定义 标题栏;这只是一个带有标题,退出,最小化按钮等的框架。
要从我们使用的标题栏移动窗口:
def get_pos(event):
xwin = app.winfo_x()
ywin = app.winfo_y()
startx = event.x_root
starty = event.y_root
ywin = ywin - starty
xwin = xwin - startx
def move_window(event):
app.geometry("400x400" + '+{0}+{1}'.format(event.x_root + xwin, event.y_root + ywin))
startx = event.x_root
starty = event.y_root
app.TopFrame.bind('<B1-Motion>', move_window)
app.TopFrame.bind('<Button-1>', get_pos)
其中TopFrame是标题栏。这种方法似乎过于复杂,但它允许条直接在鼠标上移动而不会转移到角落。
回答你的后一个问题: 制作浮动物体非常有可能;使用方法:
app.overrideredirect(True)
app.image = tk.PhotoImage(file='image.GIF')
image = Label(root, image=app.image, bg='white')
app.attributes("-transparentcolor", "white")