PyObjC 中的箭头键事件处理
Arrow key event handling in PyObjC
我正在尝试使用 PyObjC 制作一个应用程序,并且正在努力寻找如何记录箭头键(左右)。我希望能够在用户每次按下左右箭头键时进行记录。我正在使用在线找到的另一个示例。我想使用键盘上的箭头键,而不是前面示例中用于递增和递减的按钮。看了一会儿,以为我可以在这里得到一些帮助。谢谢!
from Cocoa import *
from Foundation import NSObject
class TAC_UI_Controller(NSWindowController):
counterTextField = objc.IBOutlet()
def windowDidLoad(self):
NSWindowController.windowDidLoad(self)
# Start the counter
self.count = 0
@objc.IBAction
def increment_(self, sender):
self.count += 1
self.updateDisplay()
@objc.IBAction
def decrement_(self, sender):
self.count -= 1
self.updateDisplay()
def updateDisplay(self):
self.counterTextField.setStringValue_(self.count)
if __name__ == "__main__":
app = NSApplication.sharedApplication()
# Initiate the contrller with a XIB
viewController = test.alloc().initWithWindowNibName_("test")
# Show the window
viewController.showWindow_(viewController)
# Bring app to top
NSApp.activateIgnoringOtherApps_(True)
from PyObjCTools import AppHelper
AppHelper.runEventLoop()
您的 NSView
派生的 class 应该实现 keyDown_
和/或 keyUp_
。您还需要 acceptsFirstResponder
return True:
from AppKit import NSView
class MyView(NSView)
def keyDown_(self, event):
pass
def keyUp_(self, event):
pass
def acceptsFirstResponder(self):
return True
这是您可以使用的 PyObjC 文档中的示例实现:https://pythonhosted.org/pyobjc/examples/Cocoa/AppKit/DragItemAround/index.html
我正在尝试使用 PyObjC 制作一个应用程序,并且正在努力寻找如何记录箭头键(左右)。我希望能够在用户每次按下左右箭头键时进行记录。我正在使用在线找到的另一个示例。我想使用键盘上的箭头键,而不是前面示例中用于递增和递减的按钮。看了一会儿,以为我可以在这里得到一些帮助。谢谢!
from Cocoa import *
from Foundation import NSObject
class TAC_UI_Controller(NSWindowController):
counterTextField = objc.IBOutlet()
def windowDidLoad(self):
NSWindowController.windowDidLoad(self)
# Start the counter
self.count = 0
@objc.IBAction
def increment_(self, sender):
self.count += 1
self.updateDisplay()
@objc.IBAction
def decrement_(self, sender):
self.count -= 1
self.updateDisplay()
def updateDisplay(self):
self.counterTextField.setStringValue_(self.count)
if __name__ == "__main__":
app = NSApplication.sharedApplication()
# Initiate the contrller with a XIB
viewController = test.alloc().initWithWindowNibName_("test")
# Show the window
viewController.showWindow_(viewController)
# Bring app to top
NSApp.activateIgnoringOtherApps_(True)
from PyObjCTools import AppHelper
AppHelper.runEventLoop()
您的 NSView
派生的 class 应该实现 keyDown_
和/或 keyUp_
。您还需要 acceptsFirstResponder
return True:
from AppKit import NSView
class MyView(NSView)
def keyDown_(self, event):
pass
def keyUp_(self, event):
pass
def acceptsFirstResponder(self):
return True
这是您可以使用的 PyObjC 文档中的示例实现:https://pythonhosted.org/pyobjc/examples/Cocoa/AppKit/DragItemAround/index.html