【问题标题】:Tkinter canvas problem, started coding 3 days agoTkinter画布问题,3天前开始编码
【发布时间】:2021-04-07 10:12:57
【问题描述】:

Look at this 我需要知道如何在窗口之间轻松切换,因为我使用的方法根本不起作用,我尝试破坏以前的画布并在每个切换之间添加一个新画布。它在 2 个画布上运行良好,但是当 3 个来播放代码时,代码就不起作用了。


顺便说一句,这是整个代码。

import tkinter as tk

window = tk.Tk()

canvas1 = tk.Canvas(window, width=400, height=300, bg='gray35', relief='groove', bd=8)
canvas1.pack()

label1 = tk.Label(text='The Guess Game!', font=('Comic Sans MS', 25,'bold'), bg='white', fg='black', bd=8, relief='raised')
canvas1.create_window(200,85, window=label1)

def startGame():
    canvas1.destroy()
    global canvas2
    canvas2 = tk.Canvas(window, width=400, height=300, bg='gray45', relief='groove', bd=8)
    canvas2.pack(side='left')

    btn2 = tk.Button(relief='ridge', bg='green2', width=10, height=5, command=gameEasy)
    canvas2.create_window(100, 150, window=btn2)

    btn3 = tk.Button(relief='ridge', bg='yellow2', width=10, height=5)
    canvas2.create_window(200, 150, window=btn3)

    btn4 = tk.Button(relief='ridge', bg='red2', width=10, height=5)
    canvas2.create_window(300, 150, window=btn4)

    backbtn = tk.Button(width='3', relief='groove', text='x',font=('Calibri', 10,'bold'), bd='8', bg='red', command=goBack)
    canvas2.create_window(30, 30, window=backbtn)

    lbleasy = tk.Label(text='Easy', bg='gray20', fg='white', font=('Impact', 18, 'bold'), bd='8', relief='sunken')
    canvas2.create_window(100, 75, window=lbleasy)

    lblmed = tk.Label(text='Medium', bg='gray20', fg='white', font=('Impact', 18, 'bold'), bd='8', relief='sunken')
    canvas2.create_window(200, 75, window=lblmed)

    lblhard = tk.Label(text='Hard', bg='gray20', fg='white', font=('Impact', 18, 'bold'), bd='8', relief='sunken')
    canvas2.create_window(300, 75, window=lblhard)

    infeasy = tk.Label(text='You have \nan unlimited\namount of\nguesses and the\nsecret number is\nbetween 1-20.', bg='gray45', fg='white', font=('Arial', 10, 'normal'), relief='flat')
    canvas2.create_window(100, 250, window=infeasy)

    infmed = tk.Label(text='You have 25\nguesses and\nthe secret\nnumber is\nbetween 1-50.', bg='gray45', fg='white', font=('Arial', 10, 'normal'), relief='flat')
    canvas2.create_window(200, 250, window=infmed)

    infhard = tk.Label(text='You have 15\n guesses and\nthe secret\n numberis between\n1-100.', bg='gray45', fg='white', font=('Arial', 10, 'normal'), relief='flat')
    canvas2.create_window(300, 250, window=infhard)

def goBack():
    canvas2.destroy()
    global canvas1
    canvas1 = tk.Canvas(window, width=400, height=300, bg='gray35', relief='groove', bd=8)
    canvas1.pack()

    label1 = tk.Label(text='The Guess Game!', font=('Comic Sans MS', 25,'bold'), bg='white', fg='black', bd=8, relief='raised')
    canvas1.create_window(200,85, window=label1)
    
    btn1 = tk.Button(text='Start Game!', command=startGame, font=('Impact', 20, 'bold'), relief='ridge')
    canvas1.create_window(200,180,window=btn1)
    
def gameEasy():
    canvas2.destroy()
    global canvas3
    canvas3 = tk.Canvas(window, width=400, heigth=300, bg='gray25', relief='groove', bd=8)
    canvas3.pack


btn1 = tk.Button(text='Start Game!', command=startGame, font=('Impact', 20, 'bold'), relief='ridge')
canvas1.create_window(200,180,window=btn1)

window.mainloop()

【问题讨论】:

  • 检查这个link@NgBANAN

标签: python tkinter canvas


【解决方案1】:

您在这一行中拼错了“身高”:

 canvas3 = tk.Canvas(window, width=400, heigth=300, bg='gray25', relief='groove', bd=8)

【讨论】:

  • 这很尴尬.. ;D
猜你喜欢
  • 2011-09-08
  • 2017-01-10
  • 1970-01-01
  • 1970-01-01
  • 2015-02-08
  • 2023-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多