Добрый вечер, я пытаюсь научиться программировать на Python, поэтому я написал короткий скрипт, который ищет на экране кнопку, а затем нажимает ее определенное количество раз. У меня есть код под «RunScript», также сохраненный как собственный файл. Когда я запускаю этот скрипт с терминала, он работает нормально, но когда я пытаюсь выполнить его, дважды щелкнув значок или с помощью кнопки в окне tkinter, используя приведенный ниже код, он запрашивает у меня несколько циклов, а затем ничего не делает. Я работаю на виртуальной машине Lubuntu. Пожалуйста, не могли бы вы сказать мне, что мне не хватает? Спасибо
#!/usr/bin/python3
from tkinter import *
import pyautogui
import easygui
PauseStatus = False
def RunScript():
LoopCount = easygui.enterbox('How Many Loops?')
for i in range (int(LoopCount)):
if PauseStatus:
easygui.msgbox(str(i) + ' loops completed\n' + str(int(LoopCount)-i) + 'loops remaining')
PauseStatus = False
while True:
ButtonPos = pyautogui.locateOnScreen('MyButton.png')
if ButtonPos is not None:
break
pyautogui.click(ButtonPos[0],ButtonPos[1],duration=0.25)
while True:
ButtonPos = pyautogui.locateOnScreen('MyButton.png')
if ButtonPos is not None:
break
easygui.msgbox(str(i+1) + ' loops completed')
root = Tk()
ControlPanel = Frame(root)
ControlPanel.pack()
startbutton = Button(ControlPanel, text="Start",command = RunScript)
startbutton.pack(side = LEFT)
stopbutton=Button(ControlPanel,text="Stop")
stopbutton.pack(side = LEFT)
root.mainloop()
locateOnScreen
всегда возвращает одну и ту же позицию (первой найденной кнопки), поэтому вам не нужно использовать циклwhile
. - person furas   schedule 12.02.2016