2017-04-23 23 views
1

Ich bin ein Zeichenprogramm und ich versuche, eine Option zum Ändern der Leinwand Hintergrundfarbe zu machen, aber aus irgendeinem Grund funktioniert es nicht. Es gibt keine Fehlermeldung und ich habe keine Ahnung, warum es nicht funktioniert, da ich fast den gleichen Code zum Ändern der Linienfarbe verwendet habe.Python tkinter Fensterhintergrund/Canvas Farbe nicht ändern

P.S. Ich bin sehr neu in Python.

Code:

from tkinter import * 

# canvas specifications/variables 
canvas_height = 400 
canvas_width = 600 
p1_canvas_colour = "white" 
p1_canvas_colour_number = 1 

#p1 (what you draw with) specifications/variables 
p1_x = canvas_width/2 
p1_y = canvas_height 
p1_colour = "black" 
p1_colour_change = 1 
line_width = 1 
line_length = 1 

#p1 controls 
def p1_move_N(event): 
    global p1_y 
    canvas.create_line(p1_x, p1_y, p1_x, (p1_y-line_length), width=line_width, fill=p1_colour) 
    p1_y = p1_y - line_length 

def p1_move_S(event): 
    global p1_y 
    canvas.create_line(p1_x, p1_y, p1_x, (p1_y+line_length), width=line_width, fill=p1_colour) 
    p1_y = p1_y + line_length 

def p1_move_E(event): 
    global p1_x 
    canvas.create_line(p1_x, p1_y, (p1_x+line_length), p1_y, width=line_width, fill=p1_colour) 
    p1_x = p1_x + line_length 

def p1_move_W(event): 
    global p1_x 
    canvas.create_line(p1_x, p1_y, (p1_x-line_length), p1_y, width=line_width, fill=p1_colour) 
    p1_x = p1_x - line_length 

def erase_all(event): 
    canvas.delete(ALL) 

#the p1 colour change 
def p1_line_colour_change(event): 
    global p1_colour 
    global p1_colour_change 
    p1_colour_change += 1 
    if p1_colour_change == 1: 
     p1_colour = ("black") 
    if p1_colour_change == 2: 
     p1_colour = ("white") 
    if p1_colour_change == 3: 
     p1_colour = ("red") 
    if p1_colour_change == 4: 
     p1_colour = ("orange") 
    if p1_colour_change == 5: 
     p1_colour = ("yellow") 
    if p1_colour_change == 6: 
     p1_colour = ("green") 
    if p1_colour_change == 7: 
     p1_colour = ("blue") 
    if p1_colour_change == 8: 
     p1_colour = ("purple") 
    if p1_colour_change == 9: 
     p1_colour = ("pink") 
    if p1_colour_change == 10: 
     p1_colour = ("brown") 
    if p1_colour_change == 11: 
     p1_colour_change = 1 
     p1_colour = ("black") 
#the canvas colour change 
def p1_canvas_colour_change(event): 
    global p1_canvas_colour 
    global p1_canvas_colour_number 
    p1_canvas_colour_number += 1 
    if p1_canvas_colour_number == 1: 
     p1_canvas_colour = ("white") 
    if p1_canvas_colour_number == 2: 
     p1_canvas_colour = ("black") 
    if p1_canvas_colour_number == 3: 
     p1_canvas_colour = ("red") 
    if p1_canvas_colour_number == 4: 
     p1_canvas_colour = ("orange") 
    if p1_canvas_colour_number == 5: 
     p1_canvas_colour = ("yellow") 
    if p1_canvas_colour_number == 6: 
     p1_canvas_colour = ("green") 
    if p1_canvas_colour_number == 7: 
     p1_canvas_colour = ("blue") 
    if p1_canvas_colour_number == 8: 
     p1_canvas_colour = ("purple") 
    if p1_canvas_colour_number == 9: 
     p1_canvas_colour = ("pink") 
    if p1_canvas_colour_number == 10: 
     p1_canvas_colour = ("brown") 
    if p1_canvas_colour_number == 11: 
     p1_canvas_colour_number = 1 
     p1_canvas_colour = ("white") 
#the window/canvas 
window = Tk() 
window.title("Drawing") 
canvas = Canvas(bg=p1_canvas_colour, height=canvas_height, width=canvas_width, highlightthickness=0) 
canvas.pack() 

#binding the functions to keys 
window.bind("<Up>", p1_move_N) 
window.bind("<Down>", p1_move_S) 
window.bind("<Left>", p1_move_W) 
window.bind("<Right>", p1_move_E) 
window.bind("<BackSpace>", erase_all) 
window.bind("<KP_Enter>", p1_line_colour_change) 
window.bind("<Shift_R>", p1_canvas_colour_change) 

window.mainloop() 

Antwort

2

Sie benötigen eine Leinwand, um neu zu konfigurieren, um die Änderung anzuwenden, die folgende Zeile am Ende Ihrer „p1_canvas_colour_change“ Methode hinzufügen:

canvas.configure(background=p1_canvas_colour) 
+0

Danke, Ich habe dir die beste Antwort gegeben. – BloodPanther

Verwandte Themen