0

晚上好,我正在尝试学习一些 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()
4

1 回答 1

0

You have error message similar to this

Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1539, in __call__
    return self.func(*args)
  File "<pyshell#3>", line 11, in RunScript
    if PauseStatus:
UnboundLocalError: local variable 'PauseStatus' referenced before assignment

You have to use global in function RunScript

def RunScript():
    global PauseStatus

or you have to declare variable inside function as local variable

def RunScript():
    PauseStatus = False
于 2016-02-12T14:15:06.227 回答