Модуль tkinter

Введение

Примеры

  • 1

    Минимальное приложение tkinter

    tkinter представляет собой графический инструментарий , который предоставляет обертку вокруг библиотеки Tk / Tcl GUI и входит в Python. Следующий код создает новое окно с помощью tkinter и помещает текст в окне тела.

    Примечание. В Python 2 заглавные буквы могут немного отличаться, см. Раздел «Примечания» ниже.

     import tkinter as tk
    
    # GUI window is a subclass of the basic tkinter Frame object
    class HelloWorldFrame(tk.Frame):
        def __init__(self, master):
            # Call superclass constructor
            tk.Frame.__init__(self, master)
            # Place frame into main window
            self.grid()
            # Create text box with "Hello World" text
            hello = tk.Label(self, text="Hello World! This label can hold strings!")
            # Place text box into frame
            hello.grid(row=0, column=0)
    
    # Spawn window
    if __name__ == "__main__":
        # Create main window object
        root = tk.Tk()
        # Set title of window
        root.title("Hello World!")
        # Instantiate HelloWorldFrame object
        hello_frame = HelloWorldFrame(root)
        # Start GUI
        hello_frame.mainloop() 
  • 2

    Менеджеры по геометрии

    Tkinter имеет три механизма для управления геометрией: place , pack и grid .

    place менеджер использует абсолютные координаты пикселя.

    pack менеджер размещает виджеты в один из 4 -х сторон. Новые виджеты размещаются рядом с существующими виджетами.

    grid менеджер размещает виджеты в сетку , похожую на динамически изменения размера таблицы.

    Место

    Наиболее распространенные ключевые аргументы для widget.place заключаются в следующем:

    • x , абсолютные координаты х виджета
    • y , абсолютное у-координаты виджета
    • height , абсолютная высота виджета
    • width , абсолютная ширина виджета

    Пример кода , используя place :

     class PlaceExample(Frame):
        def __init__(self,master):
            Frame.__init__(self,master)
            self.grid()
            top_text=Label(master,text="This is on top at the origin")
            #top_text.pack()
            top_text.place(x=0,y=0,height=50,width=200)
            bottom_right_text=Label(master,text="This is at position 200,400")
            #top_text.pack()
            bottom_right_text.place(x=200,y=400,height=50,width=200)
    # Spawn Window
    if __name__=="__main__":
        root=Tk()
        place_frame=PlaceExample(root)
        place_frame.mainloop()
     

    пак

    widget.pack может принимать следующие именованные аргументы:

    • expand , или не заполнять оставленное родителю пространство
    • fill , следует ли расширить , чтобы заполнить все пространство (NONE ( по умолчанию), X, Y, или ОБА)
    • side , сторона паковать против (TOP ( по умолчанию), НИЖНИЙ, ЛЕВЫЙ или ПРАВЫЙ)

    сетка

    Наиболее часто используемые ключевые слова , аргументы widget.grid заключаются в следующем:

    • row , строка виджета ( по умолчанию наименьшее незанятым)
    • rowspan , количество colums виджета пролеты ( по умолчанию 1)
    • column , столбец виджета ( по умолчанию 0)
    • columnspan , число столбцов виджета пролеты ( по умолчанию 1)
    • sticky , где поместить виджет , если ячейка сетки больше , чем (комбинация N, NE, E, SE, S, SW, W, NW)

    Строки и столбцы проиндексированы нулями. Строки увеличиваются при спуске, а столбцы - при движении вправо.

    Пример кода с использованием grid :

     from tkinter import *
    
    class GridExample(Frame):
        def __init__(self,master):
            Frame.__init__(self,master)
            self.grid()
            top_text=Label(self,text="This text appears on top left")
            top_text.grid() # Default position 0, 0
            bottom_text=Label(self,text="This text appears on bottom left")
            bottom_text.grid() # Default position 1, 0
            right_text=Label(self,text="This text appears on the right and spans both rows",
                             wraplength=100)
            # Position is 0,1
            # Rowspan means actual position is [0-1],1
            right_text.grid(row=0,column=1,rowspan=2)
    
    # Spawn Window
    if __name__=="__main__":
        root=Tk()
        grid_frame=GridExample(root)
        grid_frame.mainloop()
    
     

    Никогда не смешивайте pack и grid в том же кадре! Это приведет к тупику приложения!

Синтаксис

Параметры

Примечания