首页 > 解决方案 > 如何更改画布的状态

问题描述

我想知道如何向用户隐藏我的画布,然后在我想要它时让它重新出现。我尝试使用 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 之前隐藏画布。

标签: pythonpython-3.xtkinter

解决方案


推荐阅读