首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用没有菜单项的加速器表

问使用没有菜单项的加速器表
EN

Stack Overflow用户
提问于 2014-08-26 15:58:40
回答 1查看 1.4K关注 0票数 2

我有一个wxpython桌面应用程序,我使用python2.7和wxpython2.8。

我知道如何将加速表添加到菜单项中,但是当用户按下某个键的组合而没有菜单项时,我想触发一个事件。用户可以将焦点放在UI中的任何字段上,但是当他按下(例如)CTRL时,应该触发一个事件。怎么做?

谢谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-26 17:49:58

您总是需要将加速器表项绑定到wx.EVT_MENU,但是wxPython不需要使用菜单项对象。下面是一个简单的例子:

代码语言:javascript
复制
import wx

class MyForm(wx.Frame):

    #----------------------------------------------------------------------
    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY, "Tutorial", size=(500,500))

        # Add a panel so it looks the correct on all platforms
        panel = wx.Panel(self, wx.ID_ANY)

        randomId = wx.NewId()
        self.Bind(wx.EVT_MENU, self.onKeyCombo, id=randomId)
        accel_tbl = wx.AcceleratorTable([(wx.ACCEL_CTRL,  ord('Q'), randomId )])
        self.SetAcceleratorTable(accel_tbl)

        text = wx.TextCtrl(panel)
        text.SetFocus()

    #----------------------------------------------------------------------
    def onKeyCombo(self, event):
        """"""
        print "You pressed CTRL+Q!"

# Run the program
if __name__ == "__main__":
    app = wx.App(False)
    frame = MyForm()
    frame.Show()
    app.MainLoop()

在本例中,我们只需创建一个随机id,将该id绑定到一个事件处理程序,然后创建一个加速器,该加速器将触发该处理程序,在本例中是CTRL+Q。然后,如果按CTRL+Q,就会看到事件处理程序的触发,控制台窗口中会出现一些文本。

你可以在这里读到更多关于加速器的信息:

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25510209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档