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 に答える