繁体   English   中英

Python/Tkinter 右对齐级联菜单

[英]Python/Tkinter right aligned cascading menu

我用的是Tkinter / Python,我写了如下代码:

from Tkinter import *
from ScrolledText import *

#dummy function to be changed later
def dummy():
    print 'Oont ooncha, oont ki peeth oonchi, neechi oonth ki poonch!'

#create your main window
root = Tk(className = 'Mere Bhains wala Editor')

#mera menu
my_menu = Menu(root)

#attach this menu to the the application
root.config(menu = my_menu)

#create my file menu
filemenu = Menu(my_menu)
filemenu.add_command(label = 'New', command = dummy)
filemenu.add_command(label = 'Open', command = dummy)
filemenu.add_separator()
filemenu.add_command(label = 'Save', command = dummy)
filemenu.add_command(label = 'Save as', command = dummy)

my_menu.add_cascade(label = 'File', menu = filemenu)


#create Help menu
helpmenu = Menu(my_menu)
helpmenu.add_command(label = 'Terms of use', command = dummy)
helpmenu.add_command(label = 'Documents', command = dummy)
helpmenu.add_command(label = 'FAQ', command = dummy)
helpmenu.add_separator()
helpmenu.add_command(label = 'Community discussions', command = dummy)
helpmenu.add_command(label = 'Report issue', command = dummy)
helpmenu.add_command(label = 'Search issues', command = dummy)

my_menu.add_cascade(label = 'Help', menu = helpmenu)

#create the scrolled text area
textpad = ScrolledText(root, width=640, height = 480)
textpad.pack()

# run the window as the application
root.mainloop()

如果我运行这段代码,我会得到两个级联菜单,标题为“文件”和“帮助”。 现在的问题是,

我希望帮助菜单右对齐,文件菜单左对齐。 必须添加哪些额外的代码才能实现此目的?

您使用现有的Tkinter库所做的任何事情都是黑客。 它只是不支持右对齐的菜单项。 但是这里有一些可以做的黑客:

  1. 使用固定宽度的字体(例如Courier)和空格helpmenu.add_command(label = ' Terms of use', command = dummy)例如此helpmenu.add_command(label = ' Terms of use', command = dummy) 缺点是字体选择受限,因为对齐比例字体更加困难。
  2. 将所有菜单标签更改为代表文本的图像/位图。 每个图像的宽度和高度必须相同,并在图像中手动对齐。 这是使用您的代码和我在绘画程序中使用任意字体创建的图像的示例。 缺点是维护。 如果要更改菜单项,则必须创建一个新图像。 在此处输入图片说明

但是,可以的。 您想投入多少工作并维护它,这可能是一个问题。

您对此无能为力。 官方的tk文档非常全面,列出了所有可能的内容,并且未列出与对齐有关的任何内容。

Python 3解决了这个问题,Python 3把Tkinter版本改成了tkinter版本,在tkinter版本上面的代码只需要改前两行如下,

from tkinter import *
from tkinter.scrolledtext import ScrolledText

暂无
暂无

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

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