欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中tkinter模塊用法詳細(xì)介紹

 更新時(shí)間:2024年11月25日 10:02:05   作者:一壺濁酒..  
這篇文章主要介紹了tkinter模塊和ttk模塊的區(qū)別,以及如何在tkinter窗口中設(shè)計(jì)組件和進(jìn)行布局管理的相關(guān)資料,文中通過代碼及圖文介紹的非常詳細(xì),需要的朋友可以參考下

前言

ttk模塊是tkinter模塊中非常重要的模塊,相當(dāng)于升級(jí)版的tkinter模塊。

ttk模塊包含18個(gè)組件,其中12個(gè)組件在tkinter模塊中已經(jīng)存在。這12個(gè)模塊分別為Button(按鈕)?、Checkbutton(復(fù)選框)?、Entry(文本框)?、Frame(容器)?、Label(標(biāo)簽)?、LabelFrame(標(biāo)簽容器)?、Menu(菜單)?、PaneWindow(窗口布局管理)?、Radiobutton(單選按鈕)?、Scale(數(shù)值范圍)?、Spinbox(含選擇值的輸入框)及Scrollbar(滾動(dòng)條)組件。而其余6個(gè)組件是ttk模塊獨(dú)有的,它們分別是Combobox(組合框)?、Notebook(選項(xiàng)卡)?、Progressbar(進(jìn)度條)?、Separator(水平線)?、Sizegrip(成長(zhǎng)箱)和Treeview(目錄樹)?。

from tkinter import *  #導(dǎo)入tkinter模塊
win=Tk()  #實(shí)例化一個(gè)窗口
win.title("這是一個(gè)ttk的小demo")  #添加窗口標(biāo)題

#添加按鈕組件,然后設(shè)置樣式,text :按鈕上的文字,font:設(shè)置字號(hào),relief  設(shè)置邊框樣式
# bg :設(shè)置背景色,pack :包裝按鈕,目的是讓按鈕顯示在窗口上

btn=Button(win,text='這只是一個(gè)按鈕',font=12,relief='flat',bg='#00f5ff').pack(pady=20)
# btn=Button(win,text='這只是一個(gè)按鈕',font=12,relief='flat',bg='#00f5ff')

win.mainloop()  #讓程序繼續(xù)執(zhí)行,直到窗口被關(guān)閉

from tkinter import *
from tkinter.ttk import *
import tkinter
root=Tk()  #創(chuàng)建根窗口
root.title('這是一個(gè)ttk的小demo')

style=Style()  #創(chuàng)建Style 對(duì)象,便于設(shè)置樣式
# 設(shè)置樣式,其四個(gè)參數(shù)分別為樣式添加標(biāo)簽,設(shè)置字號(hào),設(shè)置組件的邊框樣式,設(shè)置背景色
style.configure('TButton',font=12,relief='flat',background='#00f5ff')
# 添加Button組件,text定義組件上的文字,style為組件引入樣式
btn=tkinter.ttk.Button(text='這只是個(gè)按鈕',style='TButton').pack(pady=20)

root.mainloop()

tkinter窗口設(shè)計(jì)

tkinter模塊的所有組件和ttk模塊的組件都被放在tkinter窗口中。

tkinter的核心就是組件,組件可以分為  文本類組件、按鈕類組件、選擇列表組件、容器類組件、會(huì)話類組件、菜單類組件、進(jìn)度條組件

文本類組件

  • Label:標(biāo)簽組件,用于顯示文本,添加提示信息
  • Entry:單行文本組件,只能添加單行文本,不能換行
  • Text :多行文本組件,可以添加多行文本
  • Spinbox: 輸入組件??梢暂斎雰?nèi)容,也可以直接從現(xiàn)有的選項(xiàng)中選擇內(nèi)容
  • Scale:數(shù)字范圍組件,為用戶拖動(dòng)滑塊選擇數(shù)值

按鈕類組件

  • Button:按鈕組件。通過單擊按鈕可以執(zhí)行某些操作
  • Radiobutton:單選框組件。 允許用戶在眾多選項(xiàng)中選擇一個(gè)
  • Checkbutton:復(fù)選框組件。允許多選

選擇列表類組件

  • Listbox:列表框組件。將眾多選項(xiàng)排列,讓用戶選擇
  • Scrollbar:滾動(dòng)條組件,可以綁定其他組件,當(dāng)其他組件內(nèi)容溢出顯示滾動(dòng)條
  • OptionMenu:下拉列表
  • Combobox:組合框

容器類組件

  • Frame:框架組件。將相關(guān)組件放在一起,便于管理
  • LabelFrame:標(biāo)簽框架組件,將相關(guān)的組件放在一起,并給它們一個(gè)特定的名稱
  • Toplevel:頂層窗口。重新打開一個(gè)窗口,顯示在根窗口的上方
  • PaneWindow:窗口布局管理
  • Notebook:選項(xiàng)卡,選擇不同的內(nèi)容

會(huì)話類組件

  • Message:消息框,為用戶顯示一些短消息
  • Messagebox:對(duì)話框

菜單類組件

  • Menu:菜單組件
  • Toolbar:工具欄
  • Treeview:樹菜單

進(jìn)度條組件

  • Progressbar :添加進(jìn)度條

組件的公共屬性

雖然每個(gè)組件都有各自的屬性,但有些屬性是通用。

fg:組件文字的顏色
bg:組件的背景色
font:文字的樣式
#relief:組件的邊框樣式
cursor:鼠標(biāo)懸停在組件上時(shí)候的樣式

組件的公共方法

config():為組件配置參數(shù)

keys() :獲取組件的所有參數(shù),并返回一個(gè)列表

from tkinter import *

win=Tk()  #通過Tk()方法實(shí)例化一個(gè)根窗口
# 設(shè)置窗口屬性  創(chuàng)建一個(gè)窗口之后,可以通過一系列的方法設(shè)置窗口樣式,包括窗口大小、背景等

"""
title() 設(shè)置窗口的標(biāo)題
geometry(),設(shè)置窗口的大小和位置
maxsize() 設(shè)置窗口的最大尺寸
minsize() 設(shè)置窗口的最小尺寸
configure(bg=color) 設(shè)置背景色

iconbitmap() 設(shè)置窗口的默認(rèn)圖標(biāo)

"""

win.title('tkinter的初級(jí)使用')  #添加窗口標(biāo)題
scrw=win.winfo_screenwidth()  #獲取屏幕寬度
scrh=win.winfo_screenheight() #獲取屏幕高度
winw=300  #窗口寬
winh=220
x=int((scrw-winw)/2)
y=int((scrh-winh)/2)
win.geometry("{}x{}+{}+{}".format(winw,winh,x,y)) #設(shè)置窗口的大小和位置
win.configure(bg='red') #設(shè)置窗口的背景色

#anchor 屬性是調(diào)整文字在組件中的位置,nw 左上角  padx  文字與組件邊緣的間距
txt=Label(win,text='\n i love you ',fg='red',bg='#C3DEEF',width=20,height=3,anchor='nw').pack()  #在窗口中添加一行文字
# txt=Label(win,text='\n i love you ',fg='red',bg='#C3DEEF',width=20,height=3,padx=20,pady=10).pack()  #在窗口中添加一行文字

h=Label(win,text='我愛你')
h.config(bg='red')
print(h.keys())
h.pack()
win.mainloop()  #等待與處理窗口事件   mainloop()方法讓程序循環(huán)執(zhí)行,并且等待與處理事件。mainloop()方法負(fù)責(zé)監(jiān)聽各個(gè)組件,當(dāng)組件發(fā)生變化,或者觸發(fā)事件,立即更新窗口

tkinter 布局管理

pack()方法

side 參數(shù)用于設(shè)置組件的水平展示或者垂直展示

from tkinter import *
win=Tk()

"""
side:該參數(shù)用于設(shè)置組件水平展示或者垂直展示,主要有4個(gè)屬性值。
? top:指組件從上到下依次排列,這是side參數(shù)的默認(rèn)值。
? bottom:指組件從下到上依次排列。
? left:指組件從左到右依次排列。
? right:指組件從右到左依次排列。
"""
txt1='第一行文字'
txt2='第二行文字'
txt3='第三行文字'
txt4='第四行文字'
txt5='第五行文字'
txt6='第六行文字'

Label(win,text=txt1,bg='yellow').pack(side='left')
Label(win,text=txt2,bg='#EDB584').pack(side='top')
Label(win,text=txt3,bg='#EF994C').pack(side='left')
Label(win,text=txt4,bg='#EF999C').pack(side='top')
Label(win,text=txt5,bg='#EF989C').pack(side='left')
Label(win,text=txt6,bg='#EF979C').pack(side='left')

win.mainloop()

padx和pady  設(shè)置組件邊界距離父容器邊界的距離,單位為像素

 ipadx和ipady:設(shè)置組件內(nèi)文字距離組件邊界的距離,單位為像素

from tkinter import *
win=Tk()

txt1='第一行文字'
txt2='第二行文字'
txt3='第三行文字'

# padx和pady:設(shè)置組件邊界距離父容器邊界的距離,單位為像素
# ipadx和ipady:設(shè)置組件內(nèi)文字距離組件邊界的距離,單位為像素

Label(win,text=txt1,bg='yellow').pack(side='left',padx=20,pady=50,ipadx=0,ipady=0)
Label(win,text=txt2,bg='#EDB584').pack(side='top',padx=0,pady=50,ipadx=0,ipady=0)
Label(win,text=txt3,bg='#EF994C').pack(side='left',padx=0,pady=5,ipadx=0,ipady=0)

win.mainloop()

from tkinter import *
win=Tk()

txt1='第一行文字'
txt2='第二行文字'
txt3='第三行文字'

# padx和pady:設(shè)置組件邊界距離父容器邊界的距離,單位為像素
# ipadx和ipady:設(shè)置組件內(nèi)文字距離組件邊界的距離,單位為像素

Label(win,text=txt1,bg='yellow').pack(side='left',padx=10,pady=5,ipadx=6,ipady=4)
Label(win,text=txt2,bg='#EDB584').pack(side='left',padx=50,pady=5,ipadx=6,ipady=4)
Label(win,text=txt3,bg='#EF994C').pack(side='left',padx=10,pady=5,ipadx=6,ipady=4)

win.mainloop()

grid()方法

grid()類似與Excel表格中的網(wǎng)格布局

from tkinter import *
win=Tk()

#? row,column:定義組件所在的行和列。
# 這是grid()網(wǎng)格布局方法中比較重要的兩個(gè)參數(shù),如果省略,則使用默認(rèn)值“row=0,column=0”,而單元格的大小取決于最大的組件的寬度。

Label(win,text='1*1=1',bg='yellow').grid(row=0,column=0,padx=10)
Label(win,text='1*2=2',bg='yellow').grid(row=1,column=0,padx=10)
Label(win,text='1*3=4',bg='yellow').grid(row=2,column=0,padx=10)
Label(win,text='1*4=4',bg='yellow').grid(row=3,column=0,padx=10)

Label(win,text='2*2=4',bg='yellow').grid(row=1,column=1,padx=10)
Label(win,text='2*3=6',bg='yellow').grid(row=2,column=1,padx=10)
Label(win,text='2*4=8',bg='yellow').grid(row=3,column=1,padx=10)

# rowconfigure()方法和columnconfigure()方法改變某行或某列組件所占空間隨窗口縮放的比例
win.rowconfigure(0,weight=1) #設(shè)置第一行的組件縮放比例為1
win.columnconfigure(1,weight=1) #設(shè)置第二行的組件縮放比例為1

win.mainloop()

place()方法

place()方法可以設(shè)置組件的大小及組件在容器中的精確位置

place()方法可以使用兩種方式來設(shè)置組件的大小及位置,第一種是通過參數(shù)x、y、width和height設(shè)置組件的大小和位置;第二種是通過參數(shù)relx、rely、relwidth和relheight設(shè)置組件的大小和位置

from tkinter import *
win=Tk()

"""
place()方法可以使用兩種方式來設(shè)置組件的大小及位置,第一種是通過參數(shù)x、y、width和height設(shè)置組件的大小和位置;
第二種是通過參數(shù)relx、rely、relwidth和relheight設(shè)置組件的大小和位置
"""
win.title('華容道')
win.geometry('240x300')
txt1 =Label(win,text='趙云',bg='#93edd4',relief='groove',font=14)
txt2 =Label(win,text='曹操',bg='#93edd4',relief='groove',font=14)
txt3 =Label(win,text='黃忠',bg='#93edd4',relief='groove',font=14)
txt4=Label(win,text='張飛',bg='#93edd4',relief='groove',font=14)
txt5=Label(win,text='關(guān)羽',bg='#93edd4',relief='groove',font=14)
txt6=Label(win,text='馬超',bg='#93edd4',relief='groove',font=14)
txt7=Label(win,text='卒',bg='#93edd4',relief='groove',font=14)
txt8=Label(win,text='卒',bg='#93edd4',relief='groove',font=14)
txt9=Label(win,text='卒',bg='#93edd4',relief='groove',font=14)
txt0=Label(win,text='卒',bg='#93edd4',relief='groove',font=14)

# # windth 為組件寬度,height為組件高度,x,y為組件左上角坐標(biāo)
# txt1.place(width=60,height=120,x=0,y=0)
# txt2.place(width=120,height=120,x=60,y=0)
# txt3.place(width=60,height=120,x=180,y=0)
# txt4.place(width=60,height=120,x=0,y=120)
# txt5.place(width=120,height=60,x=60,y=120)
# txt6.place(width=60,height=60,x=180,y=120)
# txt7.place(width=60,height=60,x=60,y=180)
# txt8.place(width=60,height=60,x=120,y=180)
# txt9.place(width=60,height=60,x=0,y=240)
# txt0.place(width=60,height=60,x=180,y=240)

# 布局跟隨窗口縮放的華容道游戲窗口
txt1.place(relwidth=0.25,relheight=0.4,relx=0,rely=0)
txt2.place(relwidth=0.5,relheight=0.4,relx=0.25,rely=0)
txt3.place(relwidth=0.25,relheight=0.4,relx=0.75,rely=0)
txt4.place(relwidth=0.25,relheight=0.4,relx=0,rely=0.4)
txt5.place(relwidth=0.5,relheight=0.2,relx=0.25,rely=0.4)
txt6.place(relwidth=0.25,relheight=0.2,relx=0.75,rely=0.4)
txt7.place(relwidth=0.25,relheight=0.2,relx=0.25,rely=0.6)
txt8.place(relwidth=0.25,relheight=0.2,relx=0.5,rely=0.6)
txt9.place(relwidth=0.25,relheight=0.2,relx=0,rely=0.8)
txt0.place(relwidth=0.25,relheight=0.2,relx=0,rely=0.8)

win.mainloop()

總結(jié)

到此這篇關(guān)于python中tkinter模塊用法的文章就介紹到這了,更多相關(guān)python tkinter用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python和OpenCV進(jìn)行多尺度模板匹配實(shí)現(xiàn)

    Python和OpenCV進(jìn)行多尺度模板匹配實(shí)現(xiàn)

    本文將實(shí)現(xiàn)如何將標(biāo)準(zhǔn)模板匹配擴(kuò)展到多尺度,使其可以處理模板和輸入圖像大小不同的匹配。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • python數(shù)據(jù)XPath使用案例詳解

    python數(shù)據(jù)XPath使用案例詳解

    xpath是最常用且最便捷高效的一種解析方式,通用型強(qiáng),其不僅可以用于python語(yǔ)言中,還可以用于其他語(yǔ)言中,數(shù)據(jù)解析建議首先xpath
    2021-09-09
  • python requests庫(kù)的使用

    python requests庫(kù)的使用

    這篇文章主要介紹了python requests庫(kù)的使用,幫助大家更好的利用python進(jìn)行爬蟲,感興趣的朋友可以了解下
    2021-01-01
  • python庫(kù)pydantic的入門簡(jiǎn)易教程

    python庫(kù)pydantic的入門簡(jiǎn)易教程

    本文主要介紹了python庫(kù)pydantic的入門簡(jiǎn)易教程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • python PaddleOCR庫(kù)用法及知識(shí)點(diǎn)詳解

    python PaddleOCR庫(kù)用法及知識(shí)點(diǎn)詳解

    在本篇內(nèi)容里小編給大家分享的是一篇關(guān)于python PaddleOCR庫(kù)用法及知識(shí)點(diǎn)詳解內(nèi)容,對(duì)此有需要的朋友們可以學(xué)習(xí)參考下。
    2021-07-07
  • pd.DataFrame統(tǒng)計(jì)各列數(shù)值多少的實(shí)例

    pd.DataFrame統(tǒng)計(jì)各列數(shù)值多少的實(shí)例

    今天小編就為大家分享一篇pd.DataFrame統(tǒng)計(jì)各列數(shù)值多少的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Pandas sample隨機(jī)抽樣的實(shí)現(xiàn)

    Pandas sample隨機(jī)抽樣的實(shí)現(xiàn)

    隨機(jī)抽樣,是統(tǒng)計(jì)學(xué)中常用的一種方法,本文主要介紹了Pandas sample隨機(jī)抽樣的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • python 解決tqdm模塊不能單行顯示的問題

    python 解決tqdm模塊不能單行顯示的問題

    這篇文章主要介紹了python 解決tqdm模塊不能單行顯示的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python實(shí)現(xiàn)的tab文件操作類分享

    Python實(shí)現(xiàn)的tab文件操作類分享

    這篇文章主要介紹了Python實(shí)現(xiàn)的tab文件操作類分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2014-11-11
  • Python進(jìn)程間通信用法實(shí)例

    Python進(jìn)程間通信用法實(shí)例

    這篇文章主要介紹了Python進(jìn)程間通信用法,涉及Python通過multiprocessing模塊操作進(jìn)程的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06

最新評(píng)論