3

我正在尝试将 Python 中的 GTK3 和 Cairo 用于最小的绘图应用程序,其中 Cairo 输出的屏幕显示是为了方便用户。

典型的用法是我运行一个命令,屏幕上会弹出一个绘图并写入文件,我希望能够尽快关闭窗口,理想情况下只是一个“q”键,但也是常见的 Ctrl -W 和 Ctrl-Q 除了默认的 Alt-F4(真的有人经常使用吗?!?)。

我还希望窗口中的 UI 混乱尽可能少:理想情况下只是标准的窗口环绕,没有菜单、工具栏等。

那么......我如何将我的“q”、“Ctrl-Q”等键绑定绑定到Gtk.main_quit而不必 a)创建一个杂乱的下拉菜单栏和 b)Gtk.UIManager通过 Python Gtk+ 3 关注的重量级此处的文档:http: //python-gtk-3-tutorial.readthedocs.org/en/latest/menus.html。我希望这是可能的,并且不需要大量代码(至少不像设置所有菜单那样多!),但我在网上的任何地方都找不到示例:也许我只是在搜索错误的术语,作为 GTK 新手。

不幸的是,似乎没有任何关于制作这样一个最小的加速器设置的文档,并且配置加速器键的代码在 GTK2 和 3 之间似乎有很大不同......感谢您的帮助。

4

2 回答 2

3

将信号连接到主框架Win.connect('key-press-event', self.on_key_function)并在 on_key_function (self, widget, event) 中检查 event.keyval 的值。如果您喜欢硬编码,则 ESC 为 65307。此外,对于组合键,event.state 报告 shift、alt(meta) 等:if Gdk.ModifierType.CONTROL_MASK & event.state:do_something if ctrl is pressed 您可以为 left-ctrl、right-alt 设置单独的状态;确保不要尝试捕获预定义的组合键,它们可能会被窗口管理器使用。一个具有良好自省功能的 IDE 会对您有很大帮助,只需编写 Gdk(之前导入的),自动完成就会弹出很多函数/类,其中大部分都有一个不言自明的名称。

于 2014-04-16T15:03:53.333 回答
0

不要使用 key-press-event 和 keyval,它不适用于非拉丁键盘布局的用户。GTK+ 在内部很好地将密钥值与硬件密钥匹配,此功能通过加速器(通常 accel在 API 中缩短)和绑定公开。

于 2017-02-04T03:41:58.547 回答