23-tkinter-可能不太清晰的文檔,要準確還是得查看官方

tkinter介紹

tkinter是python自帶的GUI庫,是對圖形庫TK的封裝
tkinter是一個跨平臺的GUI庫,開發的程序可以在win,linux或者mac下運行

除此之外還存在很多圖形庫,例如

pythonWin 僅適合window的界面編程庫
wxPython  第三方界面編程庫

組件概念

一個窗口中任意內容都可以稱之為一個組件

tkinter的組件包含以下幾種:

按鈕組件

Button              按鈕組件
RadioButton         單選框組件
CheckButton         選擇按鈕組件
Listbox             列表框組件

文本輸入框組件

Entry               單行文本框組件`
Text                多行文本框組件

標簽組件

Label               標簽組件,可以顯示圖片和文字
Message             標簽組件,可以根據內容將文字換行

菜單組件

Menu                菜單組件
MenuButton          菜單按鈕組件,可以使用Menu代替

滾動條組件

scale               滑塊組件
Scrollbar           滾動條組件

其他組件

Canvas              畫布組件
Frame               框架組件,將多個組件編組
Toplevel            創建子窗口容器組件

創建簡單的窗口

import tkinter

#生成主窗口對象
root = tkinter.Tk()

#保持主窗口一直消息循環中。。
root.mainloop()

帶有組件的窗口

import tkinter

#生成主窗口對象
root = tkinter.Tk()

#創建標簽 并且添加到主窗口中
label = tkinter.Label(root,text = '爺來了')
label.pack()

#創建按鈕,并且添加到主窗口中

btn1 = tkinter.Button(root,text = '按鈕1')
btn1.pack()

btn2 = tkinter.Button(root,text = '按鈕2')
btn2.pack()

#保持主窗口一直消息循環中。。
root.mainloop()

組件布局


組件布局一共三種方式:

pack()      按照方位布局
place()     按照坐標布局
grid()      按照網格布局

1.pack布局方法

所有的Tkinter組件都包含專用的幾何管理方法,這些方法是用來組織和管理整個父配件區中子配件的布局的。Tkinter提供了截然不同的三種幾何管理類:pack、grid和place。

pack幾何管理采用塊的方式組織配件,在快速生成界面設計中廣泛采用,若干組件簡單的布局,采用pack的代碼量最少。pack幾何管理程序根據組件創建生成的順序將組件添加到父組件中去。通過設置相同的錨點(anchor)可以將一組配件緊挨一個地方放置,如果不指定任何選項,默認在父窗體中自頂向下添加組件。

pack()布局的通用公式為:

組件對象.pack(設置, …)    

<table border="1">
<tbody>
<tr>
<td width="84"><p>名稱</p></td>
<td ><p>描述</p></td>
<td width="189"><p>取值范圍</p></td>
</tr>
<tr>
<td width="84"><p>expand</p></td>
<td ><p>當值為“yes”時,side選項無效。組件顯示在父配件中心位置;若fill選項為”both”,則填充父組件的剩余空間。</p></td>
<td width="189"><p>“yes”,?自然數, “no”, 0</p><p>?(默認值為“no”或0)</p></td>
</tr>
<tr>
<td width="84"><p>fill</p></td>
<td ><p>填充x(y)方向上的空間,當屬性side=”top”或”bottom”時,填充x方向;當屬性side=”left”或”right”時,填充”y”方向;當expand選項為”yes”時,填充父組件的剩余空間。</p></td>
<td width="189"><p>“x”, “y”, “both”</p><p>(默認值為待選)</p></td>
</tr>
<tr>
<td width="84"><p>ipadx, ipady</p></td>
<td ><p>組件內部在x(y)方向上填充的空間大小,默認單位為像素,可選單位為c(厘米)、m(毫米)、</p><p>i(英寸)、p(打印機的點,即1/27英寸),用法為在值后加以上一個后綴既可。</p></td>
<td width="189"><p>非負浮點數</p><p>(默認值為0.0)</p></td>
</tr>
<tr>
<td width="84"><p>padx, pady</p></td>
<td ><p>組件外部在x(y)方向上填充的空間大小,默認單位為像素,可選單位為c(厘米)、m(毫米)、</p><p>i(英寸)、p(打印機的點,即1/27英寸),用法為在值后加以上一個后綴既可。</p></td>
<td width="189"><p>非負浮點數</p><p>(默認值為0.0)</p></td>
</tr>
<tr>
<td width="84"><p>side</p></td>
<td ><p>定義停靠在父組件的哪一邊上。</p></td>
<td width="189"><p>“top”, “bottom”, “left”, “right”</p><p>(默認為”top”)</p></td>
</tr>
<tr>
<td width="84"><p>before</p></td>
<td ><p>將本組件于所選組建對象之前pack,類似于先創建本組件再創建選定組件。</p></td>
<td width="189"><p>已經pack后的組件對象</p></td>
</tr>
<tr>
<td width="84"><p>after</p></td>
<td ><p>將本組件于所選組建對象之后pack,類似于先創建選定組件再本組件。</p></td>
<td width="189"><p>已經pack后的組件對象</p></td>
</tr>
<tr>
<td width="84"><p>in_</p></td>
<td ><p>將本組件作為所選組建對象的子組件,類似于指定本組件的master為選定組件。</p></td>
<td width="189"><p>已經pack后的組件對象</p></td>
</tr>
<tr>
<td width="84"><p>anchor</p></td>
<td ><p>相對于擺放組件的位置的對齊方式,左對齊”w”,右對齊”e”,頂對齊”n”,</p><p>底對齊”s”</p></td>
<td width="189"><p>“n”, “s”, “w”, “e”, “nw”, “sw”, “se”, “ne”, “center”</p><p>(默認為” center”)</p></td>
</tr>
</tbody>
</table>

注:以上選項中可以看出expand、fill和side是相互影響的。

pack類提供了下列函數:

<table border="1" cellpadding="0" cellspacing="0" style="border:1px solid silver; border-collapse:collapse; word-break:break-word">
<tbody>
<tr>
<td width="175" ><p >函數名</p></td>
<td width="393" ><p >描述</p></td>
</tr>
<tr>
<td width="175" ><p >slaves()</p></td>
<td width="393" ><p >以列表方式返回本組件的所有子組件對象。</p></td>
</tr>
<tr>
<td width="175" ><p >propagate(boolean)</p></td>
<td width="393" ><p >設置為True表示父組件的幾何大小由子組件決定(默認值),反之則無關。</p></td>
</tr>
<tr>
<td width="175" ><p >info()</p></td>
<td width="393" ><p >返回pack提供的選項所對應得值。</p></td>
</tr>
<tr>
<td width="175" ><p >forget()</p></td>
<td width="393" ><p >Unpack組件,將組件隱藏并且忽略原有設置,對象依舊存在,可以用pack(option, …),將其顯示。</p></td>
</tr>
<tr>
<td width="175" ><p >location(x, y)</p></td>
<td width="393" ><p >x, y為以像素為單位的點,函數返回此點是否在單元格中,在哪個單元格中。返回單元格行列坐標,(-1, -1)表示不在其中。</p></td>
</tr>
<tr>
<td width="175" ><p >size()</p></td>
<td width="393" ><p >返回組件所包含的單元格,揭示組件大小。</p></td>
</tr>
</tbody>
</table>


2.grid布局方法

grid幾何管理采用類似表格的結構組織配件,使用起來非常靈活,用其設計對話框和帶有滾動條的窗體效果最好。grid采 用行列確定位置,行列交匯處為一個單元格。每一列中,列寬由這一列中最寬的單元格確定。每一行中,行高由這一行中最高的單元格決定。組件并不是充滿整個單 元格的,你可以指定單元格中剩余空間的使用。你可以空出這些空間,也可以在水平或豎直或兩個方向上填滿這些空間。你可以連接若干個單元格為一個更大空間, 這一操作被稱作跨越。創建的單元格必須相臨。

grid()布局的通用公式為:

組件對象.grid(option, …)

grid類提供了下列設置屬性:

<table border="1" ><tbody>
<tr>
<td width="84"><p >名稱</p></td>
<td width="288"><p >描述</p></td>
<td width="189"><p >取值范圍</p></td>
</tr>
<tr>
<td width="84"><p >column</p></td>
<td width="288"><p >組件所置單元格的列號。</p></td>
<td width="189"><p >自然數(起始默認值為0,而后累加)</p></td>
</tr>
<tr>
<td width="84"><p >columnspan</p></td>
<td width="288"><p >從組件所置單元格算起在列方向上的跨度。</p></td>
<td width="189"><p >自然數(起始默認值為0)</p></td>
</tr>
<tr>
<td width="84"><p >ipadx, ipady</p></td>
<td width="288"><p >組件內部在x(y)方向上填充的空間大小,默認單位為像素,可選單位為c(厘米)、m(毫米)、</p><p >i(英寸)、p(打印機的點,即1/27英寸),用法為在值后加以上一個后綴既可。</p></td>
<td width="189"><p >非負浮點數</p><p >(默認值為0.0)</p></td>
</tr>
<tr>
<td width="84"><p >padx, pady</p></td>
<td width="288"><p >組件外部在x(y)方向上填充的空間大小,默認單位為像素,可選單位為c(厘米)、m(毫米)、</p><p >i(英寸)、p(打印機的點,即1/27英寸),用法為在值后加以上一個后綴既可。</p></td>
<td width="189"><p >非負浮點數</p><p >(默認值為0.0)</p></td>
</tr>
<tr>
<td width="84"><p >row</p></td>
<td width="288"><p >組件所置單元格的行號。</p></td>
<td width="189"><p >自然數(起始默認值為0,而后累加)</p></td>
</tr>
<tr>
<td width="84"><p >rowspan</p></td>
<td width="288"><p >從組件所置單元格算起在行方向上的跨度。</p></td>
<td width="189"><p >自然數(起始默認值為0)</p></td>
</tr>
<tr>
<td width="84"><p >in_</p></td>
<td width="288"><p >將本組件作為所選組建對象的子組件,類似于指定本組件的master為選定組件。</p></td>
<td width="189"><p >已經pack后的組件對象</p></td>
</tr>
<tr>
<td width="84"><p >sticky</p></td>
<td width="288"><p >組件緊靠所在單元格的某一邊角。</p></td>
<td width="189"><p >“n”, “s”, “w”, “e”, “nw”, “sw”, “se”, “ne”, “center”</p><p >(默認為” center”)</p></td>
</tr>
</tbody>
</table>

grid類提供了下列函數:

<table border="1" cellpadding="0" cellspacing="0" style="border:1px solid silver; border-collapse:collapse; word-break:break-word">
<tbody>
<tr>
<td width="175"><p>函數名</p></td>
<td width="393"><p>描述</p></td>
</tr>
<tr>
<td width="175"><p>slaves()</p></td>
<td width="393"><p>以列表方式返回本組件的所有子組件對象。</p></td>
</tr>
<tr>
<td width="175"><p>propagate(boolean)</p></td>
<td width="393"><p>設置為True表示父組件的幾何大小由子組件決定(默認值),反之則無關。</p></td>
</tr>
<tr>
<td width="175"><p>info()</p></td>
<td width="393"><p>返回pack提供的選項所對應得值。</p></td>
</tr>
<tr>
<td width="175"><p>forget()</p></td>
<td width="393"><p>Unpack組件,將組件隱藏并且忽略原有設置,對象依舊存在,可以用pack(option, …),將其顯示。</p></td>
</tr>
<tr>
<td width="175"><p>grid_remove ()</p></td>
<td width="393">?</td>
</tr>
</tbody>
</table>

3.place布局方法

這個的幾何管理器組織放置在一個特定的位置,在他們的父widget部件.

place()布局的通用公式為:

組件對象.place(option, …)

<table border="1">
<tr>
<td width="84"><p >名稱</p></td>
<td width="288"><p >描述</p></td>
<td width="189"><p >取值范圍</p></td>
</tr>
<tr>
<td width="84">anchor</td>
<td width="288"><p >描述</p></td>
<td width="189"><p >相對于擺放組件的坐標的位置,請參閱:可能是N,E,S,W,東北,西北,東南或西南,羅盤方向指示的widget的角落,雙方默認是凈重(部件上左上角)must be n, ne, e, se, s, sw, w, nw, or center</p></td>
</tr>
<tr>
<td width="84"><p > height </p></td>
<td width="288"><p >以像素為單位的高度.<br />(絕對布局專用)</p></td>
<td width="189"><p >像素</p></td>
</tr>
<tr>
<td width="84"><p > width </p></td>
<td width="288"><p > 以像素為單位的寬度.<br />(絕對布局專用)</p></td>
<td width="189"><p >像素</p></td>
</tr>
<tr>
<td width="84"><p > relheight </p></td>
<td width="288"><p >組件相對于窗口的的高度<br />(相對布局專用)</p></td>
<td width="189"><p >0~1</p></td>
</tr>

<tr>
<td width="84"><p > relwidth </p></td>
<td width="288"><p >組件相對于窗口的的寬度<br />(相對布局專用)</p></td>
<td width="189"><p >0~1</p></td>
</tr>
<tr>
<td width="84"><p >relx</p></td>
<td width="288"><p >水平偏移為0.0和1.0之間浮動,父widget的一小部分的高度和寬度.<br />(相對布局專用)</p></td>
<td width="189"><p >0~1</p></td>
</tr>
<tr>
<td width="84"><p >rely</p></td>
<td width="288"><p >垂直偏移為0.0和1.0之間浮動,父widget的一小部分的高度和寬度.<br />(相對布局專用)</p></td>
<td width="189"><p >0~1</p></td>
</tr>
<tr>
<td width="84"><p >x</p></td>
<td width="288"><p >組件距離左上角的x坐標<br />(絕對布局專用)</p></td>
<td width="189"><p >像素</p></td>
</tr>
<tr>
<td width="84"><p >y</p></td>
<td width="288"><p >組件距離左上角的y坐標<br />(絕對布局專用)</p></td>
<td width="189"><p >像素</p></td>
</tr>

</table>

place類提供了下列函數(使用組件實例對象調用):

<table>
<tbody><tr>
<td>函數名</td>
<td>描述</td>
</tr>
<tr>
<td>place_slaves()</td>
<td>以列表方式返回本組件的所有子組件對象。</td>
</tr>
<tr>
<td>place_configure(option=value)</td>
<td>給pack布局管理器設置屬性,使用屬性(option)= 取值(value)方式設置</td>
</tr>
<tr>
<td>propagate(boolean)</td>
<td>設置為True表示父組件的幾何大小由子組件決定(默認值),反之則無關。</td>
</tr>
<tr>
<td>place_info()</td>
<td>返回pack提供的選項所對應得值。</td>
</tr>
<tr>
<td>grid_forget()</td>
<td>Unpack組件,將組件隱藏并且忽略原有設置,對象依舊存在,可以用pack(option, …),將其顯示。</td>
</tr>
<tr>
<td>location(x, y)</td>
<td>x, y為以像素為單位的點,函數返回此點是否在單元格中,在哪個單元格中。返回單元格行列坐標,(-1, -1)表示不在其中</td>
</tr>
<tr>
<td>size()</td>
<td>返回組件所包含的單元格,揭示組件大小。</td>
</tr>
</tbody></table>


組件1 按鈕(button)

用于定義gui界面中的按鈕組件,

tkinter.Button(用于存放的父組件,屬性參數...)

具備以下屬性:

anchor              設置按鈕中文字的對其方式,相對于按鈕的中心位置
background(bg)      設置按鈕的背景顏色
foreground(fg)      設置按鈕的前景色(文字的顏色)
borderwidth(bd)     設置按鈕邊框寬度
cursor              設置鼠標在按鈕上的樣式
command             設定按鈕點擊時觸發的函數
bitmap              設置按鈕上顯示的位圖
font                設置按鈕上文本的字體
width               設置按鈕的寬度  (字符個數)
height              設置按鈕的高度  (字符個數)
state               設置按鈕的狀態
text                設置按鈕上的文字
image               設置按鈕上的圖片

組件2 文本框(Entry)和多行文本(Text)

用于定義頁面中文本的單行輸入框

#單行文本
tkinter.Entry(用于存放的父組件,屬性參數...)
#多行文本
tkinter.Text(用于存放的父組件,屬性參數...)

具備以下屬性:

background(bg)          設置文本框的背景色
foreground(fg   )       設置文本框的前景色
borderwidth(bd)         設置文本輸入框的邊框
font                    設置文本框中的字體
width                   設置文本框的寬度(字符個數)
height                  設置文本框的高度(字符個數),僅限于text
state                   設置文本框的狀態
selectbackground        選中文字時文本框的背景色
selectforeground        選中文字時文字的顏色
show                    指定文本框顯示的字符,若為*,則表示為密碼框

textvariable    設置文本對應的變量,可以通過修改變量改變文字顯示,必須使用tkinter.IntVar() 或者tkinter.StringVar()產生的變量  entry可以使用

組件3 標簽(Lebal)

標簽用語在頁面中顯示文字或者圖片

tkinter.Label(用于存放的父組件,屬性參數...)

具備以下屬性:

anchor          設置文本相對于標簽中心的位置
background      設置標簽的背景色
foreground      設置標簽的前景色
borderwidth     設置標簽的邊框寬度
width               設置標簽的寬度(字符個數)
height              設置標簽的高度(字符個數)
text                設置標簽中文本內容
font                設置標簽中文字的字體類型
bitmap              設置標簽的現實的位圖
image               設置標簽中顯示的圖片
justify         是設置標簽中多行文本的對其方式
textvariable    設置文本對應的變量,可以通過修改變量改變文字顯示,必須使用tkinter.IntVar() 或者tkinter.StringVar()產生的變量

組件4 菜單(Menu)

菜單用語在界面中設置菜單,和多級子菜單
在tkinter中,菜單組件的添加與其他組件有所不同。 菜單需要使用所創建的主窗口的 config方法添加到窗口中。

這個小工具的目標是,讓我們來創建我們的應用程序,可以通過使用各種菜單。核心功能,提供的方式來創建三個菜單類型:彈出式,頂層,和下拉.

thinter.Menu(用于存放的父組件,屬性參數...)

具有以下屬性

activebackground        背景顏色,當它在鼠標下時將出現在選擇上。

activeborderwidth       指定在鼠標下方選擇的邊框的寬度。默認值為1像素。

activeforeground        當它在鼠標下方時,將出現在選擇上的前景色。

background(bg)          用于不在鼠標下的選擇的背景顏色。

borderwidth(bd)         圍繞所有選擇的邊框的寬度。默認值為1。

cursor                  當鼠標在選項上方時出現的光標,但僅當菜單已被關閉時顯示。

disabledforeground      狀態為DISABLED的項目的文本顏色。

font                    設置文本的字體

foreground(fd)          用于不在鼠標下的選擇的前景色。

postcommand             您可以將此選項設置為過程,并且每當有人啟動此菜單時,將調用該過程。

relief                  菜單的默認3-D效果為relief = RAISED。

image                   在這個menubutton上顯示一個圖像。

selectcolor             指定在檢查按鈕和單選按鈕中顯示的顏色。

tearoff                 通常情況下,菜單可以被拆除,如果設置tearoff = 0,菜單將不會有撕紙功能,并且從0位置開始添加選擇。

title                   通常,撕下菜單窗口的標題將與導致此菜單的menubutton或級聯文本相同。如果要更改該窗口的標題,請將標題選項設置為該字符串。

具有以下方法

add_command(選項)         在菜單中添加一個菜單項。
add_radiobutton(選項)     創建單選按鈕菜單項。
add_checkbutton(選項)     創建一個檢查按鈕菜單項。
add_cascade(選項)         通過將給定的菜單與父菜單相關聯來創建新的分層菜單
add_separator()          在菜單中添加分隔線。
add(類型,選項)            在菜單中添加一個特定類型的菜單項。
delete(startindex [,endindex])  刪除從startindex到endindex的菜單項。
entryconfig(index,options)      允許您修改由索引標識的菜單項,并更改其選項。
index(item)                 返回給定菜單項標簽的索引號。
insert_separator(index)     在index指定的位置插入一個新的分隔符。
invoke(index)               調用與位置索引選擇相關聯的命令回調。如果一個檢查按鈕,其狀態在設置和清除之間切換; 如果一個單選按鈕,那個選擇是設置的。
type(index)             返回由index指定的選項的類型:“cascade”,“checkbutton”,“command”,“radiobutton”,“separator”或“tearoff”。

萬能實例:

from  tkinter import *
root = Tk()
#定義點擊菜單觸發的方法
def hello():
    print("hello!")

#創建總菜單
menubar = Menu(root)

# 創建一個下拉菜單,并且加入文件菜單
filemenu = tkinter.Menu(menubar)

#創建下來菜單的選項
filemenu.add_command(label="Open", command=hello)
filemenu.add_command(label="Save", command=hello)
#創建下拉菜單的分割線
filemenu.add_separator()
filemenu.add_command(label="Exit", command=root.quit)

#將文件菜單作為下拉菜單添加到總菜單中,并且將命名為File
menubar.add_cascade(label="File", menu=filemenu)



# 顯示總菜單
root.config(menu=menubar)
root.mainloop()

組件5 單選框(Radiobutton)與復選框(Checkbutton)

thinter.Radiobutton(用于存放的父組件,屬性參數...)
thinter.Checkbutton(用于存放的父組件,屬性參數...)

具有以下屬性

anchor              設置組件中文字的對其方式
background(bg)      指定組件的背景色。    
borderwidth(bd)     指定組件邊框的寬度。    
bitmap              指定組件中的位圖。    
font                指定組件中文本的字體。    
foreground(fg)      指定組件的前 
height              指定組件的高度。    
image               指定組件中的圖片。    
justify             指定組件中多行文本的對齊方式。    
text                指定組件中的文本,可以 使用“\ n” 表示換行。    
value               指定組件被選中后(單選框)
onvalue             組件勾選狀態值(復選框)
offvalue            組件取消勾選狀態的值(復選框)
variable            指定組件所關聯的變量。  需要使用tkinter. IntVar()或者tkinter. StringVar()創建的值 
width               指定組件的寬度。
command             設置復選框操作的觸發命令(復選框)

組件6 消息對話框(messagebox)

用于界面提示成功,失敗,警告等相關信息提示框

tkinter.messagebox.FunctionName(title, message [, options])

參數:
FunctionName: 這是相應的消息框函數的名稱.

title: 這是在一個消息框,標題欄顯示的文本.

message: 這是要顯示的文字作為消息.

options: 選項有替代的選擇,你可以用它來定制一個標準的消息框。一些可以使用的選項是默認和家長。默認選項是用來指定默認的按鈕,如中止,重試,或忽略在消息框中。父選項是用來指定要顯示的消息框上的頂層窗口.

你可以使用以下功能之一對話方塊:

showinfo()          顯示信息對話框
showwarning()           提示警告對話框
showerror ()            顯示錯誤對話
askquestion()           問題對話框
askokcancel()           確定還是取消對話框
askyesno ()         是不是對話框
askretrycancel ()   重試或者取消對話框

除了上述6個標準消息框外,還可以使用tkinter.messagebox._show函數創建其他類型 的消息框。tkinter.messagebox._show函數的控制參數如下。

  default   指定消息框的按鈕。 
  icon      指定消息框的圖標。  
  message   指定消息框所顯示的消息。 
  parent    指定消息框的父組件。 
  title     指定消息框的標題。 
  type      指定消息框的類型。

  

使用標準對話框(簡單對話/文件對話/顏色對話)

使用 tkinter. simpledialog 模塊、 tkinter. filedialog 模塊、 tkinter. colorchooser 模塊可以 創建 標準 的 對話框。

tkinter.simpledialog模塊      可以創建標準的輸入對話框。
tkinter.filedialog模塊        可以創建文件打開和保存文件對話框。
tkinter.colorchooser模塊      可以創建顏色選擇對話框。

tkinter.simpledialog模塊

tkinter.simpledialog模塊可以使用函數創建三種類型的對話框:

tkinter.simpledialog.askstring(標題,提示文字,初始值)          輸入字符串          
tkinter.simpledialog.askinteger(title,prompt,initialvalue)  輸入整數
tkinter.simpledialog.askfloat(title,prompt,initialvalue)    輸入浮點型       

注意:第三個參數為關鍵字參數

tkinter.filedialog模塊

tkinter.filedialog模塊中可以使用兩種類型的對話框

tkinter.filedialog.askopenfilename(關鍵字參數傳入) 選取單個文件  創建標準的【 打開 文件】對話框。
                  .askopenfilenames   選取多個文件
                  .askdirectory       彈出選取壓縮地址路徑的對話框
tkinter.filedialog.asksaveasfilename(關鍵字參數傳入)   可以創建標準的【 保存 文件】對話框。

其具有以下幾個 相同的可選參數。

  filetypes         指定文件類型。   
  initialdir        指定默認目錄。   
  initialfile       指定默認文件。   
  title             指定對話框標題。
  

tkinter.colorchooser模塊
tkinter.colorchooser模塊中的askcolor函數可以創建標準的【 顏色 選擇】 對話框, 其具有以下幾個可選參數。

tkinter.colorchooser.askcolor(關鍵字參數傳入)

initialcolor        指定 初始化 顏色。   
title               指定 對話框 標題。

組件6 Frame 框架

thinter.Menu(用于存放的父組件,屬性參數...)

具有以下屬性

background(bg)      正常的背景顏色顯示在標簽和指示器后面。
borderwidth(bd)     指標周圍邊界的大小。默認值為2像素。
cursor              如果將此選項設置為光標名稱(箭頭,點等),則鼠標光標將在檢查按鈕上方更改為該模式。
height              新框架的垂直尺寸。
highlightbackground 當框架沒有焦點時,焦點的顏色突出顯示。
highlightcolor      當框架具有焦點時,焦點突出顯示的顏色。
highlightthickness  焦點亮點的厚度。
relief              使用默認值,relief = FLAT,檢查按鈕不會從背景中脫穎而出。您可以將此選項設置為任何其他樣式
width               checkbutton的默認寬度取決于所顯示的圖像或文字的大小。您可以設置此選項的字符數和checkbutton的,總是有許多字符的空間。

組件7 Toplevel

頂層部件的工作,直接由窗口管理器管理的窗口。

thinter.Toplevel ( option, ... )

具有以下屬性

background(bg)      窗口的背景顏色。
borderwidth(bd)     邊框寬度(以像素為單位)默認為0。
cursor              當鼠標在此窗口中時出現的光標。
class_              通常,文本窗口小部件中選擇的文本將導出為窗口管理器中的選擇。如果您不想要該行為,請設置exportselection = 0。
font                插入窗口小部件的文本的默認字體。
froeground(fg)      在窗口小部件中用于文本(和位圖)的顏色。您可以更改標記區域的顏色; 這個選項只是默認值。
height              窗口高度
relief              通常,頂級窗口將不會有三維邊框。要獲得陰影邊框,請將bd選項設置為較大的默認值為零,并將relief選項設置為其中一個常量。
width               所需的窗口寬度。

具有以下方法

deiconify()     在使用iconify或提取方法后顯示窗口。
frame()         返回系統特定的窗口標識符。
group(window)   將窗口添加到給定窗口管理的窗口組中。
iconify()       將窗口轉換為圖標,而不會破壞它。
協議(名稱,函數)   將函數注冊為將為給定協議調用的回調函數。
iconify()       將窗口轉換為圖標,而不會破壞它。
state()         返回窗口的當前狀態。可能的值是正常的,標志性的,撤銷的和圖標。
transient([master])當沒有給出參數時,將窗口轉換為給定主機或窗口的父級的臨時(瞬態)窗口。
withdraw()      從屏幕中刪除窗口,而不會破壞它。
maxsize(width,height)   定義此窗口的最大大小。
minsize(width,height)   定義此窗口的最小大小。
positionfrom(who)       定義位置控制器。
resizable(width,height) 定義resize標志,用于控制窗口是否可以調整大小。
sizefrom(who)       定義大小控制器。
title(string)       定義窗口標題。

事件綁定

之前能夠觸發操作的只有2個組件,一個按鈕一個菜單的選項卡 command屬性 設置操作對應的函數

鼠標事件類型:

<Button-1>  按下了鼠標左鍵 <ButtonPress-1>
<Button-2>  按下了鼠標中鍵 <ButtonPress-2>
<Button-3>  按下了鼠標右鍵 <ButtonPress-3>
<Enter>     鼠標進入組件區域
<Leave>     鼠標離開組件區域
<ButtonRelease-1>  釋放了鼠標左鍵
<ButtonRelease-2>  釋放了鼠標中鍵
<ButtonRelease-3>  釋放了鼠標右鍵
<B1-Moion>  按住鼠標左鍵移動
<B2-Moion>  按住鼠標中鍵移動
<B3-Moion>  按住鼠標右鍵移動 
<Double-Button-1> 雙擊鼠標左鍵
<Double-Button-2> 雙擊鼠標中鍵
<Double-Button-3> 雙擊鼠標右鍵
<MouseWheel>    滾動鼠標滾輪

鍵盤事件類型:

<KeyPress-A>        表示按下鍵盤A鍵   A可以設置為其他的按鍵
<Alt-KeyPress-A>        表示同時按下Alt和A鍵    A可以設置為其他的按鍵
<Control-KeyPress-A>        表示同時按下Ctrl和A鍵   A可以設置為其他的按鍵
<Shift-KeyPress-A>      表示同時按下Shift和A鍵  A可以設置為其他的按鍵
<Double-KeyPress-A>     表示雙擊鍵盤A鍵   A可以設置為其他的按鍵
<Lock-KeyPress-A>       表示開啟大寫之后鍵盤A鍵   A可以設置為其他的按鍵
<Alt-Control-KeyPress-A>        表示同時按下alt+Ctrl和A鍵   A可以設置為其他的按鍵

注意:鍵盤事件除了entry和text組件其他組件的事件最好綁定在主界面上

事件對象中包含的信息

x,y     當前觸發事件時鼠標相對觸發事件的組件的坐標值
x_root,y_root  當前觸發事件時鼠標相對于屏幕的坐標值
char    獲取當前鍵盤事件時按下的鍵對應的字符
keycode 獲取當前鍵盤事件時按下的鍵對應的的ascii碼
type    獲取事件的類型
num     獲取鼠標按鍵類型  123 左中右
widget  觸發事件的組件
width/height  組件改變之后的大小和configure()相關

窗口和組件相關事件類型:

Activate    當中組件由不可以用變為可用時  針對于state的變值
Deactivate  當組件由可用變為不可用時觸發
Configure   當組件大小發生變化時觸發
Destory     當組件銷毀時觸發
FocusIn     當組件獲取焦點時觸發 針對于Entry和Text有效
Map         當組件由隱藏變為顯示時觸發
UnMap       當組件由顯示變為隱藏時觸發
Perproty    當窗口屬性發生變化時觸發
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容