python tkinter,每行不止一个项目

时间:2015-06-06 11:12:32

标签: python tkinter

我对python和tkinter很陌生,所以请尽量保持简单的答案!

我已经掌握了设置窗口并添加了按钮,标签和照片等等,但我注意到每当我使用.pack()时,它只会将它添加到最后一个窗口的中间位置我收拾的东西。

我想知道是否有办法将物品打包在与我打包的最后一个物品相同的行中。

谢谢!

1 个答案:

答案 0 :(得分:0)

pack具有一些选项,可让您控制包含小部件的哪一侧使用,填充和其他内容。例如,要从左到右打包小部件,您可以使用widget.pack(side='left')。许多地方都记录了所有这些选项。

这是一个快速示例,显示顶部有一排按钮,右侧是一列标签:

import Tkinter as tk

class Example(tk.Frame):
    def __init__(self, parent):
        tk.Frame.__init__(self, parent)

        self.toolbar = tk.Frame(self, borderwidth=1, relief="raised")
        self.labels = tk.Frame(self, borderwidth=1, relief="raised")
        self.text = tk.Text(self, width=80, height=20)

        self.toolbar.pack(side="top", fill="x")
        self.labels.pack(side="right", fill="y")
        self.text.pack(side="left", fill="both", expand=True)

        for i in range(5):
            button = tk.Button(self.toolbar, text="Button %d" %i)
            button.pack(side="left")


        for i in range(5):
            label = tk.Label(self.labels, text="Label %d" %i)
            label.pack(side="top", fill="x", padx=8)

if __name__ == "__main__":
    root = tk.Tk()
    Example(root).pack(fill="both", expand=True)
    root.mainloop()

一个很好的包教程,包括所有选项的列表,在这里:http://effbot.org/tkinterbook/pack.htm

有关包算法如何工作的完整说明,请访问:http://tcl.tk/man/tcl8.5/TkCmd/pack.htm#M26