python画布颜色代码_Python Tkinter窗口背景/画布颜色不变

I am coding a drawing program and I am trying to make an option to change the canvas background colour but for some reason it doesn't work. There is no error message and I have no idea why it doesn't work as I used pretty much the same code for changing the line colour.

P.S. I am very new to 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("", p1_move_N)

window.bind("", p1_move_S)

window.bind("", p1_move_W)

window.bind("", p1_move_E)

window.bind("", erase_all)

window.bind("", p1_line_colour_change)

window.bind("", p1_canvas_colour_change)

window.mainloop()

解决方案

you need to reconfigure your canvas in order to apply the change,

add the following line at the end of your "p1_canvas_colour_change" method:

canvas.configure(background=p1_canvas_colour)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值