Python tkinter之Frame(容器)


1、Frame的基本屬性

# -*- encoding=utf-8 -*-

import tkinter
from tkinter import *

if __name__ == '__main__':
    win = tkinter.Tk()  # 窗口
    win.title('南風丶輕語')  # 標題
    screenwidth = win.winfo_screenwidth()  # 屏幕寬度
    screenheight = win.winfo_screenheight()  # 屏幕高度
    width = 500
    height = 400
    x = int((screenwidth - width) / 2)
    y = int((screenheight - height) / 2)
    win.geometry('{}x{}+{}+{}'.format(width, height, x, y))  # 大小以及位置

    frame = Frame(
            master=win,  # 父容器
            bg='yellow',  # 背景顏色
            relief='groove',  # 邊框的3D樣式 flat、sunken、raised、groove、ridge、solid。
            bd=3,  # 邊框的大小
            height=100,  # 高度
            width=100,  # 寬度
            padx=1,  # 內間距,字體與邊框的X距離
            pady=1,  # 內間距,字體與邊框的Y距離
            cursor='circle',  # 鼠標移動時樣式 arrow, circle, cross, plus...
            )
    frame.pack()

    win.mainloop()

 2、不同的Frame使用不同的布局

# -*- encoding=utf-8 -*-

import tkinter
from tkinter import *

if __name__ == '__main__':
    pass
    w = tkinter.Tk()  # 窗口
    w.title('測試')  # 標題
    w.geometry('200x100+30+30')  # 大小以及位置
    frame = Frame()  # 定義容器
    Button(
        master=frame,  # 父容器為frame
        text='容器1上的按鈕',  # 文本
    ).pack()
    frame2 = Frame()  # 定義容器
    Button(
        master=frame2,  # 父容器為frame2
        text='容器2上的按鈕',  # 文本
    ).grid(row=0, column=0)
    Label(frame2, text='容器2上的Lable', bg='yellow', fg='pink').grid(row=0, column=1)
    frame.pack()
    frame2.pack()
    w.mainloop()

 3、是否自動根據子組件改變自身大小

備注:

①默認自動根據子組件改變自身大小,可通過.propagate(False或True)進行設置

 
         
# -*- encoding=utf-8 -*-

import tkinter
from tkinter import *

if __name__ == '__main__':
win = tkinter.Tk() # 窗口
win.title('南風丶輕語') # 標題
screenwidth = win.winfo_screenwidth() # 屏幕寬度
screenheight = win.winfo_screenheight() # 屏幕高度
width = 500
height = 400
x = int((screenwidth - width) / 2)
y = int((screenheight - height) / 2)
win.geometry('{}x{}+{}+{}'.format(width, height, x, y)) # 大小以及位置

frame1 = Frame(
master=win, # 父容器
bg='yellow', # 背景顏色
relief='groove', # 邊框的3D樣式 flat、sunken、raised、groove、ridge、solid。
bd=3, # 邊框的大小
height=100, # 高度
width=100, # 寬度
padx=1, # 內間距,字體與邊框的X距離
pady=1, # 內間距,字體與邊框的Y距離
cursor='circle', # 鼠標移動時樣式 arrow, circle, cross, plus...
)
frame1.pack()

frame2 = Frame(
master=win, # 父容器
bg='yellow', # 背景顏色
relief='groove', # 邊框的3D樣式 flat、sunken、raised、groove、ridge、solid。
bd=3, # 邊框的大小
height=100, # 高度
width=100, # 寬度
padx=1, # 內間距,字體與邊框的X距離
pady=1, # 內間距,字體與邊框的Y距離
cursor='circle', # 鼠標移動時樣式 arrow, circle, cross, plus...
)
frame2.pack()
# 未設置propagate(False)時自動根據子組件改變自身大小

frame3 = Frame(
master=win, # 父容器
bg='yellow', # 背景顏色
relief='groove', # 邊框的3D樣式 flat、sunken、raised、groove、ridge、solid。
bd=3, # 邊框的大小
height=100, # 高度
width=100, # 寬度
padx=1, # 內間距,字體與邊框的X距離
pady=1, # 內間距,字體與邊框的Y距離
cursor='circle', # 鼠標移動時樣式 arrow, circle, cross, plus...
)
frame3.pack()
frame3.propagate(False) # 不自動根據子組件改變自身大小

Label(frame2, text='標簽', width=3, height=1).pack(side=TOP)
Button(frame2, text='按鈕', ).pack(side=TOP)
Label(frame3, text='標簽', ).pack(side=TOP)
Button(frame3, text='按鈕', ).pack(side=TOP)

win.mainloop()
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM