【问题标题】:canvas on top of a grid tkinter网格 tkinter 顶部的画布
【发布时间】:2015-01-16 13:12:04
【问题描述】:

我想在更大尺寸的网格上放置一个画布,这样我就可以在画布的底部创建按钮。现在我有这个:

class Canvas(Frame):
    def __init__(self, root):
        Frame.__init__(self, root)

        self.display = Canvas(root, width=500, height=500, borderwidth=5, background='white')
        self.display.pack()

root = Tk()
board = Canvas(root)
root.mainloop()

这将创建一个 500x500 的白色画布。现在假设我想在它下面添加一个 500x600 的网格。我该怎么做?

【问题讨论】:

  • 您是说要绘制一个网格——一系列水平和垂直线? “将画布放在更大的网格上”是什么意思?在 tkinter 中,“网格”不是一个东西。 grid 只是一种在网格中排列对象的方法,但它实际上并没有创建任何东西。

标签: python canvas tkinter grid


【解决方案1】:

你可以在它下面再装一个框架,用height=100 和pack 它和fill=X。然后,您可以随意将Buttons 放入这个新框架中。

import Tkinter as tk

root = tk.Tk()

display = tk.Canvas(root, width=500, height=500, borderwidth=5, background='white')
display.pack()

button_frame = tk.Frame(root, height=100)
button_frame.pack(fill=tk.X)
button1 = tk.Button(button_frame, text='button1')
button1.pack(side=tk.LEFT)
button2 = tk.Button(button_frame, text='button2')
button2.pack(side=tk.LEFT)

root.mainloop()

或者,如果你真的想要一个grid,你可以使用下面的代码将Frame放在Canvas下面

display = tk.Canvas(root, width=500, height=500, borderwidth=5, background='white')
display.grid(column=0, row=0)

button_frame = tk.Frame(root, height=100)
button_frame.grid(column=0, row=1, sticky=tk.W+tk.E)

但如果您将Canvas 与pack 一起放置,请不要尝试将框架与grid 一起放置。在root 中只使用一个布局管理器。

【讨论】:

    猜你喜欢
    • 2019-08-14
    • 2017-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-12
    • 1970-01-01
    • 2022-12-04
    相关资源
    最近更新 更多