Мне было интересно, как я могу скрыть свой холст от пользователя, а затем заставить его появиться снова, когда я захочу. Я попытался использовать canvas.config (state = "disabled"), но он не скрывает этого. Когда я пытаюсь использовать canvas.config (state = "hidden"), он говорит, что я должен использовать обычный или отключенный. Вот код:
from tkinter import *
from tkinter import ttk
root = Tk()
def redCallback():
labelRed = ttk.Label(frameTwo, text = "Red", background = "red")
labelRed.grid(row = 1, column = 0, pady = 5, ipadx = 35, ipady = 5)
def orangeCallback():
labelOrange = ttk.Label(frameTwo, text = "Orange", background = "orange")
labelOrange.grid(row = 1, column = 1, pady = 5, ipadx = 25, ipady = 5)
def yellowCallback():
labelYellow = ttk.Label(frameTwo, text = "Yellow", background = "yellow")
labelYellow.grid(row = 1, column = 2, pady = 5, ipadx = 26, ipady = 5)
def greenCallback():
labelGreen = ttk.Label(frameTwo, text = "Green", background = "green")
labelGreen.grid(row = 1, column = 3, pady = 5, ipadx = 30, ipady = 5)
def blueCallback():
labelBlue = ttk.Label(frameTwo, text = "Blue", background = "blue")
labelBlue.grid(row = 1, column = 4, pady = 5, ipadx = 33, ipady = 5)
def return_press(event):
labelCanvas = ttk.Label(frameThree, text = "Now draw on the canvas!")
labelCanvas.pack()
def mouse_press(event):
global prev
print('type: {}'.format(event.type))
print('widget: {}'.format(event.widget))
print('num: {}'.format(event.num))
print('x: {}'.format(event.x))
print('y: {}'.format(event.y))
print('x_root: {}'.format(event.x_root))
print('y_root: {}\n'.format(event.y_root))
prev = event
def draw(event):
global prev
canvas.create_line(prev.x, prev.y, event.x, event.y, width = 5)
prev = event
frameOne = ttk.Frame(root)
frameOne.pack()
frameTwo = ttk.Frame(root)
frameTwo.pack()
frameThree = ttk.Frame(root)
frameThree.pack()
labelPallet = ttk.Label(frameOne, text = "Click the buttons below, and then tap ENTER")
labelPallet.pack()
buttonRed = ttk.Button(frameTwo, text = "Red", command = redCallback)
buttonRed.grid(row = 0, column = 0, ipadx = 10, ipady = 5)
buttonOrange = ttk.Button(frameTwo, text = "Orange", command = orangeCallback)
buttonOrange.grid(row = 0, column = 1, ipadx = 10, ipady = 5)
buttonYellow = ttk.Button(frameTwo, text = "Yellow", command = yellowCallback)
buttonYellow.grid(row = 0, column = 2, ipadx = 10, ipady = 5)
buttonGreen = ttk.Button(frameTwo, text = "Green", command = greenCallback)
buttonGreen.grid(row = 0, column = 3, ipadx = 10, ipady = 5)
buttonBlue = ttk.Button(frameTwo, text = "Blue", command = blueCallback)
buttonBlue.grid(row = 0, column = 4, ipadx = 10, ipady = 5)
canvas = Canvas(root, width = 640, height = 480, background = "white")
canvas.pack()
root.bind("<Return>", return_press)
canvas.bind('<ButtonPress>', mouse_press)
canvas.bind("<B1-Motion>", draw)
В настоящее время программа просто имеет кнопки, которые при нажатии будут создавать метки в этом цвете. Я хочу, чтобы холст был скрыт до тех пор, пока labelCanvas не будет напечатан.