在 tkinter 教程的这一部分,我们介绍布局管理器。当我们设计应用程序的图形用户界面时,我们决定要使用哪些小部件,以及如何在应用程序中组织这些小部件。为了组织我们的小部件,我们使用称为布局管理器的专门的非可见对象。有两种小工具: 容器和它们的孩子。这些容器把他们的孩子放在合适的位置。Tkinter 有三个内置的布局管理器: 包、网格和位置管理器。地点几何管理器位置部件使用绝对定位。包几何管理器以水平和垂直方框组织小部件。网格几何管理器将小部件放置在二维网格中。绝对定位在大多数情况下,程序员应该使用布局管理器。有些情况下我们可以使用绝对定位。在绝对定位中,程序员以像素为单位指定每个小部件的位置和大小。如果我们调整窗口大小,窗口的大小和位置不会改变。应用程序在不同的平台上看起来不同,在 linux 上看起来不错的,在 mac os 上可能看起来不太好。在应用程序中更改字体可能会破坏布局。如果我们把应用程序翻译成另一种语言,我们必须重新布局。(翻译自zetcode)

   

absolute.py


#!/usr/bin/env python3

"""
ZetCode Tkinter tutorial

In this script, we lay out images
using absolute positioning.

Author: Jan Bodnar
Website: www.zetcode.com
"""

from PIL import Image, ImageTk
from tkinter import Tk, BOTH
from tkinter.ttk import Frame, Label, Style

class Example(Frame):

    def __init__(self):
        super().__init__()

        self.initUI()


    def initUI(self):

        self.master.title("Absolute positioning")
        self.pack(fill=BOTH, expand=1)

        Style().configure("TFrame", background="#333")

        bard = Image.open("bardejov.jpg")
        bardejov = ImageTk.PhotoImage(bard)
        label1 = Label(self, image=bardejov)
        label1.image = bardejov
        label1.place(x=20, y=20)

        rot = Image.open("rotunda.jpg")
        rotunda = ImageTk.PhotoImage(rot)
        label2 = Label(self, image=rotunda)
        label2.image = rotunda
        label2.place(x=40, y=160)

        minc = Image.open("mincol.jpg")
        mincol = ImageTk.PhotoImage(minc)
        label3 = Label(self, image=mincol)
        label3.image = mincol
        label3.place(x=170, y=50)


def main():

    root = Tk()
    root.geometry("300x280+300+300")
    app = Example()
    root.mainloop()


if __name__ == '__main__':
    main()

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐