2017-01-18 6 views
0

Ist es möglich, eine Schaltfläche an eine Funktion zu binden, die eine Form auf der Zeichenfläche zeichnet?Zeichnen einer Form mit einer Schaltfläche (Python Tkinter)

Ich habe diesen Code-Abschnitt:

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!") 

Und diese Option Funktion ist an eine Reihe von Tasten gebunden. Ich erhalte die Fehlermeldung:

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

ich versucht habe, Funktionen innerhalb der Option Funktion zu machen, die die Formen wie dies zieht:

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

aber dann nichts zeigt auf der Leinwand auf. Ich bin mir nicht sicher, ob es überhaupt einen Weg gibt, dies zu tun.

+0

Hat Ihr Button-Objekt eine 'create_oval' Methode hilft? Schaltflächen haben standardmäßig keine solche Methode. –

+0

Fehler bedeutet, dass "w" Button, nicht Canvas ist und Sie versuchen, "Button.create_oval" zu tun – furas

Antwort

0

Ja ist es möglich, definieren Sie die Funktion und geben Sie dann ihren Namen innerhalb des Befehls 'Parameter' der Schaltfläche. Dieser Code ist nur ein allgemeines Beispiel dafür, wie es funktioniert, hoffen, dass diese

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() 
Verwandte Themen