Для начала у меня есть простой скрипт ( skipper.py ), код здесь:
import pyautogui as pg
from pynput.keyboard import Key, Controller, Listener
# ===== Config =====
keyboard = Controller()
delay = 1
start_key = Key.f2
stop_key = Key.f3
exit_key = Key.f4
# ===== Config =====
stop = True
running = True
class MechanicSkipper:
def handle_on_press(self, key):
global running, stop
if key == start_key:
stop = False
elif key == stop_key:
stop = True
elif key == exit_key:
running = False
def main(self):
lis = Listener(on_press=self.handle_on_press)
lis.start()
while running:
if not stop:
pg.click(pg.position(1427, 926))
pg.stop = delay
lis.stop()
В основном, если я нажму F1, он будет нажимать в позиции 1427, 926 на моем экране. Как только я нажму F2, он остановится, и F3 программа прекратит работу. По сути, это скрипт имитации кликов с задержкой, потому что я не хочу, чтобы он постоянно спамял клики.
Я пытаюсь реализовать простой GUI для целей обучения, который по сути будет описан так :
*Simple small window*
ProgramName by NameHere
Controls:
F1 = Start
F2 = Stop
F3 = Exit
---------------------------- Some kind of border/separator here
Press F1 to Start...
И затем после нажатия клавиши F1 «Нажмите F1 для запуска ...» изменится на:
ProgramName теперь активно!
или
ProgramName теперь неактивен!
Как видите, супер просто.
Насколько я понимаю после просмотра документов для PySimple GUI, поскольку я хочу динамически обновлять информацию в GUI / окне мне нужно создать постоянное окно (многократное чтение с использованием события l oop + обновляет данные в окне) вместо одного окна.
С учетом сказанного вот что я до сих пор ( Skipper_ gui .py ):
import skipper
import PySimpleGUI as sg
sg.theme('Dark Blue 3')
layout = [
[sg.Text('ProgramName by NameHere')],
[sg.Text('Controls:')],
[sg.Button('F1 (Start)')], # Figure out how to trigger a button w/ a hotkey
[sg.Button('F2 (Stop)')], # Figure out how to trigger a button w/ a hotkey
[sg.Button('F3 (Exit)')], # Figure out how to trigger a button w/ a hotkey
# Line separator here of some kind
]
window = sg.Window('Window Title', layout)
while True:
event, values = window.read()
print(event, values)
if event == 'F1 (Start)':
# how to insert my start code from skipper.py here?
elif event == 'F2 (Stop)':
# how to insert my stop code from skipper.py here?
elif event == 'F3 (Exit)':
# how to insert my exit code from skipper.py here?
window.close()
Как вы видите, я пытаюсь понять, как "позвонить?" мои функции / код из Skipper.py в кнопки Skipper_ gui .py's F1 / F2 / F3. Я пытаюсь посмотреть на некоторые примеры из документации как можно больше, но я в тупике и могу использовать точку в правильном направлении.