Я получил эту ошибку немного назад, поэтому я начал помещать код в main, который временно устраняет проблему. Но теперь я столкнулся с контрольно-пропускным пунктом, поскольку мне кажется, что не удается запустить код вне моего скрипта? Для тех, кому интересно, это будет инструмент для создания снимков экрана, у меня есть код, работающий для части скриншота, и я на полпути к обрезке, но я хотел объединить их вместе, ха-ха.
главный:
if __name__ == '__main__':
def listen():
with Listener(
on_press=on_press,
on_release=on_release) as listener:
listener.join()
def on_press(key):
print('{0} pressed'.format(
key))
def on_release(key):
print('{0} release'.format(
key))
if key == Key.print_screen:
im = pysc.grab()
im.save('P:/Python/temp/screenshot.png')
print("------------------- Screenshot exported -------------------")
WIDTH, HEIGHT = 1919, 1079
BACKGROUND = 'grey'
TITLE = ' '
root.title(TITLE)
root.geometry('%sx%s' % (WIDTH, HEIGHT))
root.configure(background=BACKGROUND)
root.attributes("-fullscreen", True)
app = Application(root, background=BACKGROUND)
app.pack(side=tk.TOP, fill=tk.BOTH, expand=tk.TRUE)
app.mainloop()
listen()
Ошибка:
File "P:\Python\screenshotselection - Copy.py", line 217, in on_release
root.title(TITLE)
File "C:\Program Files (x86)\Python38-32\lib\tkinter\__init__.py", line 2217, in wm_title
return self.tk.call('wm', 'title', self._w, string)
RuntimeError: main thread is not in main loop
pynput
несовместим сtkinter
, потому что они оба хотят обрабатывать события пользовательского ввода. tkinter делает это в своем файлеmainloop()
. - person martineau   schedule 22.11.2019