我为朋友的业务编写了一个Python程序,并使用Tkinter作为界面。到目前为止,所有功能都已添加到主程序窗口中,但我现在正在添加打印功能,创建了一个简单的“文件”菜单,并希望在该菜单中添加“打印”条目,包括显示相关的键盘快捷键。
在我的Mac上,我希望快捷方式为Command-P。我找到了Mac“命令”符号的Unicode值,并尝试了各种方法来创建一个简单地连接该符号和字母“P”的加速器字符串,但没有任何效果。我在“打印”旁边的菜单中显示符号或字母,但从不同时显示。
以下是添加菜单项的完整代码行,以及构建字符串的最新尝试(我相信我在Stack Overflow中的其他位置找到了此unicode.join
选项):
sub_menu.add_command(label="Print", command=self.print_, accelerator=unicode.join(u"\u2318", u"P"))
// Only the "P" displays
以下是我尝试过的其他一些选项(为了清晰起见,会截断行)。对于这些选项中的每一个,仅显示“命令”符号:
accelerator=u"\u2318\u0050"
accelerator=u"\u2318" + "P"
accelerator=u"\u2318" + u"P"
accelerator=u"\u2318P"
accelerator=u"".join([u"\u2318", u"P"])
到目前为止,我还没有必要多了解Unicode字符串,所以也许在这方面我做错了。然而,我所做的所有尝试都是在这里和其他地方进行各种搜索的结果,到目前为止还没有任何效果。任何有关如何使这项工作的见解将是最受欢迎的!
Python 2.7.3,Mac OS X 10.8.3
答案 0 :(得分:1)
实际上这很简单,我所做的只是使用string formatting
来连接text="%s%s" % (u"\u2318","P")
以下是Tkinter App
示例,显示屏很小但显示了您需要的内容。
import Tkinter as tk
class SampleApp(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
self.label = tk.Label(text="%s%s" % (u"\u2318","P"))
self.label.pack(padx=10, pady=10)
app = SampleApp()
app.mainloop()
输出:
⌘P
答案 1 :(得分:1)
在进一步在线搜索后,我终于找到了具有解决方案的a page。我很惊讶(并且有点恼火)这个解决方案与我迄今为止引用的Tkinter 8.4的PDF文档中概述的解决方案不同(新墨西哥技术公司发布的解决方案)。我找到了Tkinter 8.5文档的链接,但是他们也列出了错误的过程。
无论如何,它比我想象的要简单得多,并且类似于用于键绑定的语法,但略有不同。 Tkinter不是直接在加速器字符串中包含命令符号,而是使用文字“Command”(或缩写为“Cmd”),并在内部将其转换为菜单中的可显示字符“⌘”。所以我的结果是:
sub_menu.add_command(label="Print", command=self.print_, accelerator="Command-P")
...我在我的完整菜单项中得到的是:
Print ⌘P
如上面链接的页面所示,其他修饰键存在类似的快捷键,在Mac OS X上,这些都会自动转换为图形等效词。