Python/Tkinter:级联菜单锚定在右侧而不是左侧
Posted
技术标签:
【中文标题】Python/Tkinter:级联菜单锚定在右侧而不是左侧【英文标题】:Python/Tkinter: Cascading menus anchored at the right instead of the left 【发布时间】:2015-11-12 15:48:01 【问题描述】:以下代码会生成一个带有级联菜单的菜单栏,由于未知原因,这些菜单锚定在右侧而不是左侧。
import tkinter as tk
class Menubar(tk.Menu):
def __init__(self, parent, *args, **kwargs):
tk.Menu.__init__(self, parent, *args, **kwargs)
filemenu = tk.Menu(self, tearoff=False)
self.add_cascade(label="File",underline=0, menu=filemenu)
filemenu.add_command(label="Exit", underline=0, command=None)
testmenu = tk.Menu(self, tearoff=False)
self.add_cascade(label="Test",underline=0, menu=testmenu)
testmenu.add_command(label="First option", underline=0, command=None)
class MainApplication(tk.Frame):
def __init__(self, parent, *args, **kwargs):
tk.Frame.__init__(self, parent, *args, **kwargs)
menubar = Menubar(parent)
parent.config(menu=menubar)
if __name__ == "__main__":
root = tk.Tk()
MainApplication(root).pack(side="top", fill="both", expand=True)
root.mainloop()
【问题讨论】:
它们在我看来是左对齐的。你在什么操作系统上运行这个?其他应用程序上的其他菜单是什么样的,它们也是右对齐的吗? Tk 菜单会出现在光标的左侧,如果您启动它们,它们会在屏幕的右边缘绘制。你接近边缘了吗?当我在 Windows 上测试时看起来很正常,除了在我的屏幕右侧。 【参考方案1】:我能够解决问题。我首先只注意到我自己的应用程序中的问题,而其他人似乎正常工作。在尝试了一些其他应用程序之后,似乎问题不仅限于我自己的问题。我想我首先尝试的那些没有问题,因为他们可能使用了不同的小部件工具包。问题是由 Windows (8.1) 引起的,它自动切换了平板电脑的一些设置(我有一个半平板电脑:Lenovo Thinkpad Yoga)。
通过运行以下命令解决了问题(按 windows 键 + R 运行命令)
shell:::80F3F1D5-FECA-45F3-BC32-752C152E456E
这将带您进入“平板电脑设置”。在“其他”选项卡中,您必须确保选择“左撇子”。这会将菜单的外观更改为正常。
【讨论】:
以上是关于Python/Tkinter:级联菜单锚定在右侧而不是左侧的主要内容,如果未能解决你的问题,请参考以下文章