2017-04-11 67 views
0

我試圖做一個LagSwitch使用python tkinter,但我有一個錯誤,我無法修復,我是tkinter新。能否請你幫忙?我的Tkinter按鈕錯誤

我的錯誤,我得到運行腳本:

ActivateButton = Button(text="Activate",fg="green", bg="black",command=activate)
NameError: name 'activate' is not defined

這是我的腳本:

#MAIN 
from tkinter import * 
import os 
root = Tk() 

#FRAMES 
topFrame = Frame() 
topFrame.pack(side=TOP) 
bottomFrame = Frame() 
bottomFrame.pack(side=BOTTOM) 

#LABELS 
MainLabel = Label(text="LagSwitch V0.1", fg="green", bg="black", font="arial") 
MainLabel.pack() 

#BUTTONS 
QuitButton = Button(text="Close", command=quit, fg="red", bg="black", font="arial") 
QuitButton.pack(side=BOTTOM) 
ActivateButton = Button(text="Activate", fg="green", bg="black", command=activate) 
ActivateButton.pack(side=TOP) 
DeActivateButton = Button(text="Deactivate", fg="red", bg="black", command=deactivate) 
DeActivateButton.pack(side=TOP) 

#Activate/Deactivate command 
def activate(): 
    os.system("networksetup -setairportpower airport on") 
def deactivate(): 
    os.system("networksetup -setairportpower airport off") 

#ROOT STUFF 
root.geometry("500x300") 
root.configure(background="black") 
root.title("LagSwitch V0.1") 
root.mainloop() 

我能做些什麼?我是初學者,所以我不那麼聰明。我如何改進腳本並修復我遇到的錯誤?我不明白。

+0

我在手機上,所以我不能嘗試。如果將您的激活和停用功能移到按鈕上方,會發生什麼情況? – Scheme

+0

由於錯誤狀態,當您在按鈕定義中使用它時,「activate」尚未定義。你以後只需要定義'activate'。所以,只需在'#BUTTONS'部分上移動'activate'和'deactivate'函數定義即可。 –

+0

您必須定義一個函數_before_將其引用到代碼中的其他位置。這與tkinter無關,只是python的工作原理。 –

回答

0

如果您希望按鈕有一個處理函數,你需要聲明它你使用該功能前,像這樣:

def activate(): 
    os.system("networksetup -setairportpower airport on") 

ActivateButton = Button(text="Activate", fg="green", bg="black", command=activate) 

所以你需要切換的部分#Activate/Deactivate command#BUTTONS在腳本中。

+0

謝謝你們這麼多! –

0
from tkinter import * 

root = Tk() 

def printName(event): 
    print("Hello my name is User") 


button_1 = Button(root, text="Press Me") 
button_1.bind("<Button-1>", printName) 

root.mainloop() 

嘗試綁定像我的小例子中的按鈕。

+0

注意:print(「您好,我的名字是用戶」)應該縮進。/ – alienware13user

+0

這不是一個將命令綁定到按鈕的好方法。 – abccd