После использования «AskDirectory» из Tkinter в Python 3 я win32api.GetKeyState () не работает.
Привет!
В Python 3 я пытаюсь поймать нажатые клавиши, чтобы выполнить несколько действий в моем инструменте. Логика выглядит так:
1. Я выбираю папку для сохранения результатов.
2. Я ловлю нажатия клавиш и выполняю некоторые действия.
3. Сохраняю результаты в папке.
Для выбора папки я использую «askdirectory» из tkinter.
Для сканирования ключей я использую win32api.GetKeyState ()
Когда я пытаюсь сканировать ключи без вызова askdirectory, все работает нормально. Если я вызываю askdirectory и затем пытаюсь сканировать ключи, win32api.GetKeyState () показывает статические результаты. Кажется, что win32api больше не может получать результаты.
Может кто-нибудь помочь мне решить проблему?
Код ниже не работает на моей машине. Если я сделаю комментарий "folder = filedialog.askdirectory (title =" Tilte ")" - все прекрасно работает.
Заранее спасибо.
import time
import tkinter
from tkinter import filedialog
def scan_keys():
import win32api
roll = True
base_left_mouse = win32api.GetKeyState(0x01)
base_shift = win32api.GetKeyState(0x10)
base_ctrl = win32api.GetKeyState(0x11)
base_alt = win32api.GetKeyState(0x12)
base_p = win32api.GetKeyState(0x50)
while roll:
print("Scanning keys")
print(base_left_mouse, base_shift, base_ctrl, base_alt, base_p)
left_mouse = win32api.GetKeyState(0x01)
shift = win32api.GetKeyState(0x10)
ctrl = win32api.GetKeyState(0x11)
alt = win32api.GetKeyState(0x12)
p = win32api.GetKeyState(0x50)
if (alt<0 and p!=base_p):
print("ALT + P is pressed")
elif (ctrl<0 and alt<0 and p!=base_p):
print("Gathering complete")
roll = False
base_left_mouse = win32api.GetKeyState(0x01)
base_shift = win32api.GetKeyState(0x10)
base_ctrl = win32api.GetKeyState(0x11)
base_alt = win32api.GetKeyState(0x12)
base_p = win32api.GetKeyState(0x50)
print("Scanning base keys")
time.sleep(1)
root=tkinter.Tk()
root.withdraw()
folder = filedialog.askdirectory(title="Tilte")
print(folder)
scan_keys()
root.mainloop()