我看到你正在使用self
,所以你在一个class
内部。
为什么你的构造函数不使用self.client_socket = client_socket
呢?
def __init__(client_socket, **other_args_of_yours):
self.client_socket = client_socket
或者在 handle_keyboard_events()
方法中添加 self.client_socket = client_socket
:
def handle_keyboard_events(self, client_socket):
self.client_socket = client_socket
keyboard_listener = keyboard.Listener(
on_press=self.on_key_press,
on_release=self.on_key_release
)
keyboard_listener.start()
在 press
和 release
方法中使用 self.client_socket
def on_key_press(self, key):
key_press_command = KeyPress(key)
self.send_message(key_press_command, True, self.client_socket)
def on_key_release(self, key):
key_release_command = KeyRelease(key)
self.send_message(key_release_command, True, self.client_socket)
或者
如果你真的想将 client_socket
传递给你的 press
和 release
方法,你可以尝试这样做:
def handle_keyboard_events(self, client_socket):
keyboard_listener = keyboard.Listener(
on_press=lambda key: self.on_key_press(key, client_socket),
on_release=lambda key: self.on_key_release(key, client_socket)
)
keyboard_listener.start()
def on_key_press(self, key, client_socket):
key_press_command = KeyPress(key)
self.send_message(key_press_command, True, client_socket)
def on_key_release(self, key, client_socket):
key_release_command = KeyRelease(key)
self.send_message(key_release_command, True, client_socket)
然后你就可以开始了。