2017-01-18 335 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()