基於tkinter中ttk控件的width-height設置方式

ttk控件的width-height設置

tkinter中窗口,框架容器,控件如果不設置寬度高度,則會根據其中的內容自動設置寬度高度

框架容器設置瞭寬度高度,如果其內存在控件,則寬度高度失效,自動適應控件大小

如果窗口,框架容器,控件中沒有內容,寬度和高度為默認的最小尺寸(可能看不到)

頂級窗口

頂級窗口:高度寬度,單位像素點

import tkinter as tk
from tkinter import ttk
win = tk.Tk()
win1 = tk.Toplevel()
win.geometry('600x600') #設置頂級窗口寬度高度,單位像素點
win1.geometry('600x600') #設置頂級窗口寬度高度,單位像素點
#筆記本屏幕分辨率如果是1366x768,那麼geometry('1366x768')鋪滿整個屏幕(當然不建議)

框架容器

Frame,LabelFrame,PanedWindow:高度寬度,單位像素點

win = tk.Tk()
win.title("TTK_GUI")
win.geometry("600x600+10+10")
s = ttk.Style()
s.configure('1.TFrame',background='DarkGray')
frame1 = ttk.Frame(win,width=500,height=100,style='1.TFrame')
frame1.pack(pady=10)
s.configure('2.TLabelframe')
labelframe1 = ttk.LabelFrame(win,text='labelframe1',width=500,height=100,
                             style='2.TLabelframe')
labelframe1.pack(pady=10)
s.configure('2.TPanedwindow',background='DarkGray')
panedwindow1 = ttk.PanedWindow(win,width=500,height=100,
                               style='2.TPanedwindow')
panedwindow1.pack(pady=10)

控件-Label

內容為文本,寬度單位:字符單位;內容為圖片,顯示原始大小,忽略寬度設置;

內容為圖文混合(【圖片寬度-像素點】小於【width值-字符單位】),寬度單位:字符單位,

圖片尺寸過大則寬度設置失效

import tkinter as tk
from tkinter import ttk
import tkinter.font as tkFont
s = ttk.Style()
image1 = tk.PhotoImage(file="001.png") #PhotoImage支持gif,png格式
ft1 = tkFont.Font(family='Consolas',size=10,weight='bold')
s.configure('1.TLabel',font=ft1,background='DarkGray',foreground='red',
            width=40,anchor='center',justify='left',padding=[2,0,2,0])
label1 = ttk.Label(win,text='第一行文字word \nThis is second 
                   row',style='1.TLabel')
label1.pack()
label2 = ttk.Label(win,text='標簽23',image=image1,compound='center',style='1.TLabel')
label2.pack(pady=2)
#anchor='center',justify='left' # 整體居中,多行文本左對齊

控件-Button類

Button,Checkbutton,Radiobutton,Menubutton:

內容為文本,寬度單位:字符單位;內容為圖片,顯示原始大小,忽略寬度設置;

內容為圖文混合(【圖片寬度-像素點】小於【width值-字符單位】),寬度單位:字符單位,

圖片尺寸過大則寬度設置失效

ft1 = tkFont.Font(family='Consolas',size=10,weight='bold')
image1 = tk.PhotoImage(file="001.png") #PhotoImage支持gif,png格式
s.configure('1.TButton',foreground='blue',justify='center',width=40,font=ft1)
b1 = ttk.Button(win,text='按鈕',style='1.TButton')
b1.pack(pady=2)
b2 = ttk.Button(win,text='按鈕',image=image1,compound='center',style='1.TButton') 
b2.pack(pady=2)
b3 = ttk.Button(win,image=image1) 
b3.pack(pady=2)
#忽略寬度高度設置,自動顯示原始大小圖片,
#若圖片尺寸超過button父控件寬度高度,隻顯示部分圖片

控件-Entry

Entry:內容文本,寬度單位:字符單位 ,average-size characters of the widget's font

s.configure('1.TEntry',padding=[2,0,2,0])
e1 = ttk.Entry(win,textvariable=etxt,foreground='red',width=40,font=ft1,
               justify='center',style='1.TEntry')
e1.pack(pady=2)

控件-Combobox

width設置長度,寬度單位:average-size characters of the widget's font;高度單位:行

val1=[1,2,3,4]
s.configure('1.TCombobox',padding=[-5,0,-5,0])
cc1 = ttk.Combobox(win,width=40,height=3,values=val1,style='1.TCombobox')
cc1.pack(pady=2)

控件-Spinbox

width設置長度,寬度單位:average-size characters of the widget's font

val2=['AVC','x264','345f','FRD6hy']
sp1 = ttk.Spinbox(win,values=val2,width=39,
                  foreground='red',justify='center',font=ft1)
sp1.pack(pady=2)

控件-Scale

length設置長度,單位像素點

ttk中Scale屬性(無showvalue,resolution,label),可用性不如tk,建議不要使用ttk.Scale

控件-Progressbar

length設置長度,單位像素點

prbar = ttk.Progressbar(win,length=300)
prbar.pack(pady=2)

控件-Notebook

寬度,高度,單位像素點

labelframe1 = ttk.LabelFrame(win,text='labelframe1',width=500,height=100)
labelframe1.pack(pady=2)
tabControl = ttk.Notebook(labelframe1,width=300,height=80)
tabControl.pack(expand=1,fill='both')
tab1 = ttk.Frame(tabControl)
tabControl.add(tab1,text='Tab 1')
tab2 = ttk.Frame(tabControl)
tabControl.add(tab2,text='Tab 2')

控件-Scrollbar

無長度寬度設置,在pack(fill='x')或pack(fill='y')

總結

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: