所以从这里开始是我的代码:
from Tkinter import *
def hello():
print "Hello"
root = Tk()
root.attributes('-fullscreen', 1)
icons = []
icons.append(PhotoImage(file="Icons\start.gif"))
icons.append(PhotoImage(file="Icons\quit.gif"))
icons.append(PhotoImage(file="Icons\save.gif"))
icons.append(PhotoImage(file="Icons\load.gif"))
icons.append(PhotoImage(file="Icons\Next.gif"))
screensizex = root.winfo_screenwidth()
screensizey = root.winfo_screenheight()
mainframe = Frame(root, height=(screensizey-(screensizey/20)), width=screensizex, bg="#50a9ad")
mainframe.grid(row=0)
menuframe = Frame(root, height=(screensizey/20), width=screensizex)
menuframe.grid(row=1, sticky="w")
startmenu = Menubutton ( menuframe, text="Start", image=icons[0], compound = LEFT, relief=RAISED,
direction="above")
startmenu.grid(row=0, column=0)
startmenu.place(relx=0.03, rely=0.5, anchor=CENTER)
startmenu.menu = Menu(startmenu, tearoff=0)
startmenu["menu"] = startmenu.menu
startmenu.configure(font=("Arial", 8, "bold"))
startmenu.menu.add_command(label="Next Day", image = icons[4], compound = LEFT, command=hello)
startmenu.menu.add_separator()
startmenu.menu.add_command(label="Save", image = icons[2], compound = LEFT, command=hello)
startmenu.menu.add_command(label="Load", image = icons[3], compound = LEFT, command=hello)
startmenu.menu.add_separator()
startmenu.menu.add_command(label="Quit", image = icons[1], compound = LEFT, command=root.quit)
startmenu.menu.configure(font=("Arial", 8))
root.mainloop()
以下是我得到的: GUI
正如您可以在菜单按钮上方看到菜单“浮动”而不是仅仅位于其上方。 我不知道是什么原因造成的,但我无法弄清楚如何解决它。我相信这很简单,但我是Python的初学者.... 在此先感谢您的帮助。
答案 0 :(得分:0)
问题似乎是将菜单按钮放在绝对底部。这是接近最小的代码,菜单按钮从底部向上“一行”,在Win10上使用3.6(tk 8.6)
import tkinter as tk
root = tk.Tk()
root.attributes('-fullscreen', 1)
tk.Button(root, text='Close', command=root.destroy).pack()
mb = tk.Menubutton(root, text='Menu', direction='above')
#mb.pack(side='bottom')
tk.Label(root, text='Filler2').pack(side='bottom')
mb.pack(side='bottom')
tk.Label(root, text='Filler1').pack(side='bottom')
menu = tk.Menu(mb, tearoff=0)
menu.add_command(label='Popup', command=lambda:print('hello'))
mb['menu'] = menu
Popup位于Filler1之上。将底部向下移动到底部(通过注释和取消注释包装线),弹出窗口位于同一位置,留下间隙。我尝试使用ttk Menubutton而获得相同的行为。然后我去了official Tk docs并发现了'齐平'方向,将方框放在按钮上方。对于tk,这意味着“在覆盖按钮的顶部”。对于ttk来说,它意味着'与顶部齐平,让按钮暴露',这就是你想要的。因此,至少在Windows上使用tk 8.6的解决方案是使用
创建按钮mb = ttk.Menubutton(root, text='Menu', direction='flush')