【问题标题】:How to make button using canvas in toplevel() Tkinter如何在toplevel()Tkinter中使用画布制作按钮
【发布时间】:2021-02-06 18:55:17
【问题描述】:

我正在尝试在 Tkinter 的 toplevel() 中使用 canvas.create_window 制作一个按钮。按钮用于返回主窗口。显示第一个“开始”按钮,但不显示第二个“返回”按钮。代码如下。

from tkinter import *

win = Tk()

def play_button():
    win.withdraw()
    top = Toplevel()
    top.geometry("300x300")
    button_back = Button(top, text="Back", command=back_button)

    canvas_two = Canvas(top, width = 300, height = 300)    
    canvas_two.pack(fill="both", expand=True)         
    Button_reverse = canvas_two.create_window(0, 0, anchor="nw", window=button_back)
    top.resizable(False, False)

def back_button():
    win.deiconify()

win.geometry("300x300")

canvas = Canvas(win, width = 300, height = 300)
canvas.pack(fill="both", expand=True)      
button_play = Button(win, text="Play", command=play_button)
Play_button = canvas.create_window(0, 0, anchor="nw", window=button_play )

win.mainloop()

【问题讨论】:

标签: python tkinter tkinter-canvas


【解决方案1】:

问题在于canvas_two 和button_back 的创建顺序。您需要先创建Canvas,然后将Button 放在上面,如下所示。

def play_button():
    win.withdraw()
    top = Toplevel()
    top.geometry("300x300")

    canvas_two = Canvas(top, width=300, height=300)
    canvas_two.pack(fill="both", expand=True)

    button_back = Button(top, text="Back", command=back_button)
    Button_reverse = canvas_two.create_window(0, 0, anchor="nw", window=button_back)
    top.resizable(False, False)

【讨论】:

    猜你喜欢
    • 2020-07-28
    • 2017-10-05
    • 2020-08-13
    • 2012-04-20
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多