是否可以将键盘快捷键(例如int ia[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
for (int (&pl)[4] : ia)
与Undo,for
重做,Ctrl+z
,Ctrl+Shift+z
等)绑定到wxpython中的GLCanvas?如果是这样,有人可以提供一个最小的例子,可能是像单击一样绘制球体,然后用快捷方式撤消和重做?
答案 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示例代码,您可以使用鼠标旋转它。