Как использовать urllib.request.urlopen () с add_hotkey ()? - PullRequest
0 голосов
/ 01 августа 2020

add_hotkey(random_macro_list[i], lambda: request.urlopen, args=(choice(RANDOM_LIST)))

Я запускаю эту строку кода, но каждый раз, когда нажимается горячая клавиша, возникают следующие ошибки:

Traceback (most recent call last):
  File "C:\Users\Jonathan Van-Doninck\AppData\Local\Programs\Python\Python38-32\lib\threading.py", line 932, in _bootstrap_inner
    self.run()
  File "C:\Users\Jonathan Van-Doninck\AppData\Local\Programs\Python\Python38-32\lib\threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\Jonathan Van-Doninck\Desktop\Programing\Programs\totallynotavirus\venv\lib\site-packages\keyboard\_generic.py", line 58, in process
    if self.pre_process_event(event):
  File "C:\Users\Jonathan Van-Doninck\Desktop\Programing\Programs\totallynotavirus\venv\lib\site-packages\keyboard\__init__.py", line 218, in pre_process_event
    callback(event)
  File "C:\Users\Jonathan Van-Doninck\Desktop\Programing\Programs\totallynotavirus\venv\lib\site-packages\keyboard\__init__.py", line 649, in <lambda>
    handler = lambda e: (event_type == KEY_DOWN and e.event_type == KEY_UP and e.scan_code in _logically_pressed_keys) or (event_type == e.event_type and callback())
  File "C:\Users\Jonathan Van-Doninck\Desktop\Programing\Programs\totallynotavirus\venv\lib\site-packages\keyboard\__init__.py", line 637, in <lambda>
    callback = lambda callback=callback: callback(*args)
TypeError: <lambda>() takes 0 positional arguments but 43 were given

кто-нибудь знает, что я делаю неправильно?

1 Ответ

0 голосов
/ 01 августа 2020

Вы указываете args=(choice(RANDOM_LIST)), поэтому keyboard пытается вызвать вашу лямбду с этими аргументами. Также использования скобок недостаточно для создания кортежа, в этом случае он получает строку, которая, вероятно, имеет длину 43, и пытается передать каждый символ в качестве другого аргумента. И я нигде не вижу вызова urlopen.

Вероятно, вы хотели написать что-то вроде этого:

add_hotkey(random_macro_list[i], lambda url: request.urlopen(url), args=(choice(RANDOM_LIST),))

Обратите внимание на запятую.

...