创建多个wx.AcceleratorEntry()条目并将函数绑定到它们的正确方法是什么?wxPython

雷内切克

目前,我正在wxPython最终高中项目上工作,并且我面临另一个问题,我想将击键组合项(例如CTRL + S ...)绑定到我的函数中,但是我无法实现能满足要求的结果我的期望。

我已经尝试过了,但是没有绑定按键。

accelnum = 2

        accelerators = [wx.AcceleratorEntry() for x in range(accelnum)]

        accelerators[0].Set(wx.ACCEL_CTRL, ord('S'), 'save')
        accelerators[1].Set(wx.ACCEL_CTRL, ord('E'), 'export')


        accel=wx.AcceleratorTable(accelerators)
        self.SetAcceleratorTable(accel)


def save(self, event):
        # some code...

def export(self, event):
        # some other code...

我还尝试将ID设置为与我为工具栏工具设置的ID相同的ID,但是它说'id'在这里无效。

非常感谢您的所有建议。[R

编辑

所有人都想知道可能是什么问题,所以我还使用了wx.EVT_CHAR_HOOK来检测“ DEL”键。当我第二次重写我的课程时,我忘记添加EVT_CHAR_HOOK,它可以正常工作。直到我将EVT_CHAR_HOOK添加回去。这意味着您不能同时使用它。所以我接下来要做的是:

ID_SAVE = wx.NewIdRef()
ID_EXPORT = wx.NewIdRef()
ID_DELETE = wx.NewIdRef()
accelerators = [wx.AcceleratorEntry() for x in range(3)]
accelerators[0].Set(wx.ACCEL_CTRL, ord('S'), ID_SAVE)
accelerators[1].Set(wx.ACCEL_CTRL, ord('E'), ID_EXPORT)
accelerators[2].Set(wx.ACCEL_NORMAL, wx.WXK_DELETE, ID_DELETE)

还要分配我的删除按钮,它现在可以工作

萨克森罗夫

一如既往,罗宾的回答确实有效。
您可能希望检查一下如何实现它。
尝试这样的事情:

import wx

ID_SAVE = wx.NewIdRef()
ID_EXPORT = wx.NewIdRef()
accelerators = [wx.AcceleratorEntry() for x in range(2)]
accelerators[0].Set(wx.ACCEL_CTRL, ord('S'), ID_SAVE)
accelerators[1].Set(wx.ACCEL_CTRL, ord('E'), ID_EXPORT)

class MyFrame(wx.Frame):
    def __init__(self, parent, id=wx.ID_ANY, title="", size=(360,100)):
        super(MyFrame, self).__init__(parent, id, title, size)
        accel=wx.AcceleratorTable(accelerators)
        self.SetAcceleratorTable(accel)
        self.panel = wx.Panel(self)
        self.Bind(wx.EVT_MENU, self.OnSave, id=ID_SAVE)
        self.Bind(wx.EVT_MENU, self.OnExport, id=ID_EXPORT)
        self.Show()

    def OnSave(self, event):
        print("Save")
        event.Skip()

    def OnExport(self, event):
        print("Export")
        event.Skip()

if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame(None,title="An Accelerator Test")
    app.MainLoop()

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

React Components-创建它们的正确方法是什么?

WPF MVVM 创建多个数据网格并将项目绑定到它们

WxPython,如何使用给定的键代码创建wx.KeyEvent?

创建对象并将其推入向量的正确方法是什么?

将多个wx.EVT_MENU绑定到同一方法?

使用mobx创建多个商店并将其注入到组件的正确方法-ReactJs

创建多个图的函数

自动创建多个方法

在Rust中拥有多个链接列表并在它们之间移动数据的正确方法是什么?

在 JavaScript 中创建类并将其传递给 MVC 控制器的正确方法是什么

在微风中创建复杂类型的未绑定实例的正确方法是什么?

wxPython的wx.Panel的默认样式是什么?

从字典填充 wx.MenuItem 并将所有 MenuItems 绑定到相同的方法(传递字典值)?

快速创建多个文件的.cab文件的最佳方法是什么?

将动态创建的控件绑定到reactui中的属性的最佳方法是什么?

Django 从多个函数创建类

创建多个分支线程的正确方法

创建多个xml文件并将其导出为一个zip文件的最佳方法是什么?

从颜色创建画笔的正确方法是什么?

创建预设结构的正确方法是什么?

创建复杂元素的正确方法是什么?

创建多个.o的最佳方法

如何为多个ajax调用设置延迟并将停止按钮绑定到它们?

如何在wx.notebook中调整多个画布的大小,浮点大小和重叠问题(WxPython,Matplotlib)

如何创建可以实例化多个对象并将它们放入列表的泛型方法

在 plotnine 中绘制多个 lambda 函数以便图例出现的正确方法是什么?

在react或react-native中处理渲染函数中的多个返回的正确方法是什么

在Python中跨多个函数使用MySQLdb连接和游标的正确方法是什么

在C中创建和初始化包含函数指针的结构的正确方法是什么?