繁体   English   中英

tkinter中的标题栏菜单

[英]Title bar menu in tkinter

我想我们大多数人一定都看过命令提示符 (windows) 以及当我们打开它并单击它的图标时它会显示一个菜单。 我们可以对 tkinter 做类似的事情吗? 这不是普通的菜单栏。

这是命令提示符之一的说明。

命令提示符图标/标题栏菜单

这只是一个解决方法的示例,无需您自己完成所有 window 管理。 当然它需要改进,但作为一个开始: Popup stolen from

import tkinter as tk
from PIL import Image, ImageTk

def popup(event):
    popup_menu.tk_popup(event.x_root, event.y_root, 0)

def set_icon():
    global top, popup
    top = tk.Toplevel(root)
    top.overrideredirect(1)
    top.attributes('-topmost',True)
    offset = 30
    x,y = root.winfo_rootx(),root.winfo_rooty()-offset
    width, height = offset,offset
    top.geometry("%dx%d+%d+%d" % (width,height, x,y))
    my_label = tk.Label(top, image=photo)
    my_label.pack(fill='both')
    global popup_menu
    popup_menu = tk.Menu(top, tearoff=0)
    popup_menu.add_command(label="Delete",
                           command=lambda :print('del'))
    popup_menu.add_command(label="Select All",
                           command=lambda :print('sel'))

    top.bind("<Button-1>", popup)

def grab(event):
    top.geometry(f'+{event.x+10}+{event.y+2}')

root=tk.Tk()

ico = Image.open('prac_img/p2.png')
photo = ImageTk.PhotoImage(ico)
root.iconphoto(False,photo)
#root.wm_iconphoto(False,photo)
root.bind('<Configure>',grab)
root.update_idletasks()
set_icon()

root.mainloop()

另一种方法是编写您自己的标题栏并使用overrideredirecr(1) ,这将由系统的 window 管理器取消修饰您的 window。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM