2017-01-18 342 views
0

是否可以將按鈕綁定到在畫布上繪製形狀的函數?使用按鈕繪製形狀(Python Tkinter)

我有這部分代碼:

def option(*args): 
global missguess 
missguess=missguess+1 
if missguess==1: 
    w.create_oval(210,100,295,175,width=3) 
if missguess==2: 
    w.create_line(249,175,249,285,width=3) 
if missguess==3: 
    w.create_line(249,200,270,250,width=3) 
if missguess==4: 
    w.create_line(249,200,228,250,width=3) 
if missguess==5: 
    w.create_line(249,285,228,350,width=3) 
if missguess==6: 
    w.create_line(249,285,270,350,width=3) 
    print("You Lose!") 

而這個選項功能綁定到一個數字按鍵。我不斷收到錯誤:

AttributeError: 'Button' object has no attribute 'create_oval' 

我曾試圖彌補繪製形狀像這樣的選項函數內部功能:

def option(*args): 
global missguess 
missguess=missguess+1 
if missguess==1: 
    def oval(): 
     w.create_oval(210,100,295,175,width=3) 

但後來什麼也不顯示在畫布上。我不確定是否有辦法做到這一點。

+0

請問您的按鈕對象有一個'create_oval'方法?按鈕默認沒有這種方法。 –

+0

錯誤意味着'w'是Button,而不是Canvas,並且您嘗試執行'Button.create_oval' – furas

回答

0

是的,您可以定義函數,然後將其名稱放在按鈕的'command'參數中。 這個代碼是如何工作的只是一個普通的例子,希望這有助於

import Tkinter 

window = Tkinter.Tk() 

canvas = Tkinter.Canvas(window, width=640, height=480) 
canvas.pack() 

def draw_circle(): 
    canvas.create_oval(25,25,70,70) 

button = Tkinter.Button(window, text="draw circle", command=draw_circle) 
button.pack() 

window.mainloop()