Python+tkinter使用爬蟲資料開發例項專案過程實錄【2】tkinter建立可自適應視窗調整大小的介面

aolixiaox發表於2020-05-28

如題,PC應用,通常是允許使用者調節視窗的大小,那麼視窗內的控制元件大小就需要跟隨視窗大小變化進行自適應調整,最終效果如下

在這裡插入圖片描述


權重的設定的作用

在這裡插入圖片描述

例子中的程式碼,在主視窗win中新增一個容器Frame(框架)。在沒有新增權重的設定,容器的拉伸屬性sticky沒有生效。
***所以,要實現控制元件自適應視窗調整,關鍵的一個步驟就是權重設定。***

權重的設定方法

1、在上面例子的容器中,新增3個效果演示的Lable

from tkinter import *

win = Tk()
win.wm_minsize(400, 220)

win.rowconfigure(0, weight=1)
win.columnconfigure(0, weight=1)

Frame1 = Frame(win, bg="#74CB10")
Frame1.grid(row=0, column=0, sticky=NSEW)

# Frame1.rowconfigure(0, weight=1)
# Frame1.columnconfigure(0, weight=1)
# Frame1.columnconfigure(1, weight=1)

left = Label(Frame1, text='left', bg='#DD5044')
left.grid(row=0, column=0, sticky=NSEW)
right = Label(Frame1, text='right', bg='#1BA160')
right.grid(row=0, column=1, sticky=NSEW)
bottom = Label(Frame1, text='bottom', bg='#FD6934')
bottom.grid(row=1, column=0, columnspan=2, sticky=NSEW)

win.mainloop()


A:原始尺寸
在這裡插入圖片描述


B:僅新增行1的權重

# 僅新增行1的權重
Frame1.rowconfigure(0, weight=1)

在這裡插入圖片描述


C:新增1,2兩行的權重

# 新增1,2兩行的權重
Frame1.rowconfigure(0, weight=1)
Frame1.rowconfigure(1, weight=1)

在這裡插入圖片描述


C:新增1,10兩行的權重

# 新增1,10兩行的權重
Frame1.rowconfigure(0, weight=1)
Frame1.rowconfigure(9, weight=1)

在這裡插入圖片描述


容器中的物件,會先按原始尺寸進行填充,然後
1:如果有設定權重
2:容器有剩餘的空間
3:對sticky屬性進行了設定
拉伸才會有效果。
權重是針對剩餘的空間,權重也就是一個分配的比例.
比如:剩餘12個單位的高度(寬度)。第1行(列)設定weight=1,第2行(列)設定weight=2,那麼也就是第1行(列)會拉伸4個單位,第2行(列)會拉伸8個單位。

效果例項

A:左右2個區域,左邊區域不變,右邊區域拉伸

在這裡插入圖片描述


B:上下2個區域,下方區域不變,上方區域拉伸

在這裡插入圖片描述

相關文章