在wxPython中将键盘快捷键绑定到GLCanvas

时间:2015-08-19 02:43:22

标签: python-2.7 opengl wxpython

是否可以将键盘快捷键(例如int ia[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}; for (int (&pl)[4] : ia) 与Undo,for重做,Ctrl+zCtrl+Shift+z等)绑定到wxpython中的GLCanvas?如果是这样,有人可以提供一个最小的例子,可能是像单击一样绘制球体,然后用快捷方式撤消和重做?

1 个答案:

答案 0 :(得分:1)

import wx
from wx import glcanvas

class myFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, title='test')
        self.gl = MyCanvasBase(self)
        self.Show()

class MyCanvasBase(glcanvas.GLCanvas):

    def __init__(self, parent):
        glcanvas.GLCanvas.__init__(self, parent, -1, style=wx.WANTS_CHARS)
        self.Bind(wx.EVT_CHAR, self.OnKeyDown) # for wx.WANTS_CHARS
        # self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)

    def OnKeyDown(self, evt):
        keycode = evt.GetKeyCode()
        print keycode

if __name__ == '__main__':
    app = wx.App(0)
    Frame = myFrame()
    app.MainLoop()
    app.Destroy()
通过将窗口样式设置为wx.WANTS_CHARS,可以捕获

(编辑)control + c等。我做了更改以使用那种风格。

这是我尝试制作捕获按键事件但没有立方体的最小示例。

你看过wxphython演示吗?这是wxpython最好的学习资源之一。如果您安装wxPython2.8-win32-docs-demos-2.8.12.1.exe,您将找到一个带有立方体的OpenGL示例代码,您可以使用鼠标旋转它。