【发布时间】:2015-08-19 02:43:22
【问题描述】:
是否可以在 wxpython 中将键盘快捷键(如 Ctrl+z 到 Undo、Ctrl+Shift+z 到 Redo、Ctrl+c、Ctrl+v 等)绑定到 wxpython 中的 GLCanvas?如果是这样,有人可以提供一个最小的例子,比如单击绘制一个球体,然后使用快捷方式撤消和重做?
【问题讨论】:
标签: python-2.7 opengl wxpython
是否可以在 wxpython 中将键盘快捷键(如 Ctrl+z 到 Undo、Ctrl+Shift+z 到 Redo、Ctrl+c、Ctrl+v 等)绑定到 wxpython 中的 GLCanvas?如果是这样,有人可以提供一个最小的例子,比如单击绘制一个球体,然后使用快捷方式撤消和重做?
【问题讨论】:
标签: python-2.7 opengl wxpython
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()
(edit) control+c 等可以通过将窗口样式设置为 wx.WANTS_CHARS 来捕获。我进行了更改以使用该样式。
这是我尝试做一个捕获按键事件但没有多维数据集的最小示例。
你看过 wxphython 演示吗?那是 wxpython 最好的学习资源之一。如果你安装wxPython2.8-win32-docs-demos-2.8.12.1.exe,你会发现一个OpenGL 示例代码,其中包含一个可以用鼠标旋转的立方体。
【讨论】:
ctrl + key)它只捕获一个键。我也试试wx.EVT_CHAR。