#python #tkinter #hotkeys
#python #tkinter #горячие клавиши
Вопрос:
Я писал простое приложение для подсчета, которое содержит всего 3 счетчика внутри текстовых файлов с интерфейсом GUI. Счетчики могут увеличиваться, уменьшаться и очищаться (сбрасываться на ноль). Я создал горячие клавиши для этого с помощью tkinter, но, похоже, не могу запускать горячие клавиши в качестве фоновых процессов (я полагаю, что это так называется), когда я сворачиваю их или запускаю полноэкранное приложение.
import tkinter as tkinter
import sys
import os
root = tkinter.Tk()
winCounter = tkinter.IntVar()
tieCounter = tkinter.IntVar()
loseCounter = tkinter.IntVar()
def countUp(counter):
counter.set(counter.get() 1)
counter4file = str((counter.get() 1) - 1)
if counter == winCounter:
file = open("winsCounter.txt","w ")
file.write(counter4file)
file.close()
elif counter == loseCounter:
file = open("loseCounter.txt","w ")
file.write(counter4file)
file.close()
else:
file = open("tiesCounter.txt","w ")
file.write(counter4file)
file.close()
def countDown(counter):
counter.set(counter.get() - 1)
counter4file = str((counter.get() - 1) 1)
if counter == winCounter:
file = open("winsCounter.txt","w ")
file.write(counter4file)
file.close()
elif counter == loseCounter:
file = open("loseCounter.txt","w ")
file.write(counter4file)
file.close()
else:
file = open("tiesCounter.txt","w ")
file.write(counter4file)
file.close()
def countClear(event=None):
winCounter.set(0)
loseCounter.set(0)
tieCounter.set(0)
zeroOut = "0"
file1 = open("winsCounter.txt","w ")
file2 = open("loseCounter.txt","w ")
file3 = open("tiesCounter.txt","w ")
file1.write(zeroOut)
file2.write(zeroOut)
file3.write(zeroOut)
file1.close()
file2.close()
file3.close()
#os.remove("winsCounter.txt")
#os.remove("tiesCounter.txt")
#os.remove("loseCounter.txt")
tkinter.Label(root, textvariable=winCounter, fg = "white", bg ="green", font = "Verdana 30 bold").pack()
tkinter.Label(root, textvariable=tieCounter, fg = "white", bg ="green", font = "Verdana 30 bold").pack()
tkinter.Label(root, textvariable=loseCounter, fg = "white", bg ="green", font = "Verdana 30 bold").pack()
winUp = tkinter.Button(root, text="Win 1", command=lambda: countUp(winCounter)).pack()
winDown = tkinter.Button(root, text="Win -1", command=lambda: countDown(winCounter)).pack()
tieUp = tkinter.Button(root, text="Tie 1", command=lambda: countUp(tieCounter)).pack()
tieDown = tkinter.Button(root, text="Tie -1", command=lambda: countDown(tieCounter)).pack()
loseUp = tkinter.Button(root, text="Lose 1", command=lambda: countUp(loseCounter)).pack()
loseDown = tkinter.Button(root, text="Lose -1", command=lambda: countDown(loseCounter)).pack()
clearAll = tkinter.Button(root, text="CLEAR!!", command=lambda: countClear()).pack()
root.bind("<Control-F1>", lambda event: countUp(winCounter))
root.bind("<Control-F2>", lambda event: countDown(winCounter))
root.bind("<Control-F5>", lambda event: countUp(tieCounter))
root.bind("<Control-F6>", lambda event: countDown(tieCounter))
root.bind("<Control-F7>", lambda event: countUp(loseCounter))
root.bind("<Control-F8>", lambda event: countDown(loseCounter))
root.bind("<Control-F4>", lambda event: countClear())
root.mainloop()
Любая помощь приветствуется, большое вам спасибо
Комментарии:
1. Вам придется запросить об этом ОС. Какую ОС вы используете?
2. Windows 10, 64-разрядная версия
3. В Windows есть функция RegisterHotKey , которую вы можете использовать. Вот пример python .