python圖形界面tk 2.2 在容器中嵌入一個(gè)容器

目錄頁請(qǐng)猛擊我

在容器中嵌入一個(gè)容器

代碼在最下面
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import tkinter as tk
from tkinter import ttk
from tkinter import scrolledtext        # 導(dǎo)入滾動(dòng)文本框的模塊

win = tk.Tk()
win.title("Python GUI")    # 添加標(biāo)題

# 創(chuàng)建一個(gè)容器,
monty = ttk.LabelFrame(win, text=" Monty Python ")     # 創(chuàng)建一個(gè)容器偏瓤,其父容器為win
monty.grid(column=0, row=0, padx=10, pady=10)       # padx  pady   該容器外圍需要留出的空余空間
aLabel = ttk.Label(monty, text="A Label")

ttk.Label(monty, text="Chooes a number").grid(column=1, row=0)    # 添加一個(gè)標(biāo)簽流酬,并將其列設(shè)置為1,行設(shè)置為0
ttk.Label(monty, text="Enter a name:").grid(column=0, row=0, sticky='W')      # 設(shè)置其在界面中出現(xiàn)的位置  column代表列   row 代表行

# button被點(diǎn)擊之后會(huì)被執(zhí)行
def clickMe():   # 當(dāng)acction被點(diǎn)擊時(shí),該函數(shù)則生效
  action.configure(text='Hello ' + name.get() + ' ' + numberChosen.get())     # 設(shè)置button顯示的內(nèi)容
  print('check3 is %s %s' % (type(chvarEn.get()), chvarEn.get()))

# 按鈕
action = ttk.Button(monty, text="Click Me!", command=clickMe)     # 創(chuàng)建一個(gè)按鈕, text:顯示按鈕上面顯示的文字, command:當(dāng)這個(gè)按鈕被點(diǎn)擊之后會(huì)調(diào)用command函數(shù)
action.grid(column=2, row=1)    # 設(shè)置其在界面中出現(xiàn)的位置  column代表列   row 代表行

# 文本框
name = tk.StringVar()     # StringVar是Tk庫內(nèi)部定義的字符串變量類型,在這里用于管理部件上面的字符;不過一般用在按鈕button上晋辆。改變StringVar,按鈕上的文字也隨之改變。
nameEntered = ttk.Entry(monty, width=12, textvariable=name)   # 創(chuàng)建一個(gè)文本框珊膜,定義長度為12個(gè)字符長度,并且將文本框中的內(nèi)容綁定到上一句定義的name變量上宣脉,方便clickMe調(diào)用
nameEntered.grid(column=0, row=1, sticky=tk.W)       # 設(shè)置其在界面中出現(xiàn)的位置  column代表列   row 代表行
nameEntered.focus()     # 當(dāng)程序運(yùn)行時(shí),光標(biāo)默認(rèn)會(huì)出現(xiàn)在該文本框中

# 創(chuàng)建一個(gè)下拉列表
number = tk.StringVar()
numberChosen = ttk.Combobox(monty, width=12, textvariable=number, state='readonly')
numberChosen['values'] = (1, 2, 4, 42, 100)     # 設(shè)置下拉列表的值
numberChosen.grid(column=1, row=1)      # 設(shè)置其在界面中出現(xiàn)的位置  column代表列   row 代表行
numberChosen.current(0)    # 設(shè)置下拉列表默認(rèn)顯示的值车柠,0為 numberChosen['values'] 的下標(biāo)值

# 復(fù)選框
chVarDis = tk.IntVar()   # 用來獲取復(fù)選框是否被勾選,通過chVarDis.get()來獲取其的狀態(tài),其狀態(tài)值為int類型 勾選為1  未勾選為0
check1 = tk.Checkbutton(monty, text="Disabled", variable=chVarDis, state='disabled')    # text為該復(fù)選框后面顯示的名稱, variable將該復(fù)選框的狀態(tài)賦值給一個(gè)變量塑猖,當(dāng)state='disabled'時(shí)竹祷,該復(fù)選框?yàn)榛疑荒茳c(diǎn)的狀態(tài)
check1.select()     # 該復(fù)選框是否勾選,select為勾選, deselect為不勾選
check1.grid(column=0, row=4, sticky=tk.W)       # sticky=tk.W  當(dāng)該列中其他行或該行中的其他列的某一個(gè)功能拉長這列的寬度或高度時(shí)羊苟,設(shè)定該值可以保證本行保持左對(duì)齊塑陵,N:北/上對(duì)齊  S:南/下對(duì)齊  W:西/左對(duì)齊  E:東/右對(duì)齊

chvarUn = tk.IntVar()
check2 = tk.Checkbutton(monty, text="UnChecked", variable=chvarUn)
check2.deselect()
check2.grid(column=1, row=4, sticky=tk.W)

chvarEn = tk.IntVar()
check3 = tk.Checkbutton(monty, text="Enabled", variable=chvarEn)
check3.select()
check3.grid(column=2, row=4, sticky=tk.W)

# 單選按鈕

# 定義幾個(gè)顏色的全局變量
colors = ["Blue", "Gold", "Red"]

# 單選按鈕回調(diào)函數(shù),就是當(dāng)單選按鈕被點(diǎn)擊會(huì)執(zhí)行該函數(shù)
def radCall():
    radSel = radVar.get()
    if radSel == 0:
        win.configure(background=colors[0])      # 設(shè)置整個(gè)界面的背景顏色
  print(radVar.get())
    elif radSel == 1:
        win.configure(background=colors[1])
    elif radSel == 2:
        win.configure(background=colors[2])

radVar = tk.IntVar()    # 通過tk.IntVar() 獲取單選按鈕value參數(shù)對(duì)應(yīng)的值
radVar.set(99)
for col in range(3):
    # curRad = 'rad' + str(col)
  curRad = tk.Radiobutton(monty, text=colors[col], variable=radVar, value=col, command=radCall)    # 當(dāng)該單選按鈕被點(diǎn)擊時(shí),會(huì)觸發(fā)參數(shù)command對(duì)應(yīng)的函數(shù)
  curRad.grid(column=col, row=5, sticky=tk.W)     # 參數(shù)sticky對(duì)應(yīng)的值參考復(fù)選框的解釋

# 滾動(dòng)文本框
scrolW = 30 # 設(shè)置文本框的長度
scrolH = 3 # 設(shè)置文本框的高度

scr = scrolledtext.ScrolledText(monty, width=scrolW, height=scrolH, wrap=tk.WORD)     # wrap=tk.WORD   這個(gè)值表示在行的末尾如果有一個(gè)單詞跨行蜡励,會(huì)將該單詞放到下一行顯示,比如輸入hello令花,he在第一行的行尾,llo在第二行的行首, 這時(shí)如果wrap=tk.WORD,則表示會(huì)將 hello 這個(gè)單詞挪到下一行行首顯示, wrap默認(rèn)的值為tk.CHAR
scr.grid(column=0, columnspan=3)        # columnspan 個(gè)人理解是將3列合并成一列   也可以通過 sticky=tk.W  來控制該文本框的對(duì)齊方式

# 標(biāo)簽容器

# 創(chuàng)建一個(gè)容器,其父容器為monty
labelsFrame = ttk.LabelFrame(monty, text='Labels in a Frame')
labelsFrame.grid(column=1, row=7)

# 將標(biāo)簽放入到容器中
ttk.Label(labelsFrame, text='Label1').grid(column=0, row=0)
ttk.Label(labelsFrame, text='Label2').grid(column=1, row=0)
ttk.Label(labelsFrame, text='Label3').grid(column=2, row=0)

for child in labelsFrame.winfo_children():      # labelsFrame.winfo_children 可以獲取labelsFrame容器的所有子部件的對(duì)象
  child.grid_configure(padx=8, pady=4)         # 通過子部件對(duì)象的grid_configure()方法可以修改部件的屬性

win.mainloop()      # 當(dāng)調(diào)用mainloop()時(shí),窗口才會(huì)顯示出來

代碼執(zhí)行結(jié)果如圖
fabca80c-8ee8-47c9-84d9-2d7c81e732a2.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末凉倚,一起剝皮案震驚了整個(gè)濱河市兼都,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌稽寒,老刑警劉巖俯抖,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異瓦胎,居然都是意外死亡芬萍,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門搔啊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來柬祠,“玉大人,你說我怎么就攤上這事负芋÷祝” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵旧蛾,是天一觀的道長莽龟。 經(jīng)常有香客問我,道長锨天,這世上最難降的妖魔是什么毯盈? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮病袄,結(jié)果婚禮上搂赋,老公的妹妹穿的比我還像新娘赘阀。我一直安慰自己,他們只是感情好脑奠,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布基公。 她就那樣靜靜地躺著,像睡著了一般宋欺。 火紅的嫁衣襯著肌膚如雪轰豆。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天齿诞,我揣著相機(jī)與錄音秒咨,去河邊找鬼。 笑死掌挚,一個(gè)胖子當(dāng)著我的面吹牛雨席,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播吠式,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼陡厘,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了特占?” 一聲冷哼從身側(cè)響起糙置,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎是目,沒想到半個(gè)月后谤饭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡懊纳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年揉抵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嗤疯。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡冤今,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出茂缚,到底是詐尸還是另有隱情戏罢,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布脚囊,位于F島的核電站龟糕,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏悔耘。R本人自食惡果不足惜讲岁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧催首,春花似錦、人聲如沸泄鹏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽备籽。三九已至舶治,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間车猬,已是汗流浹背霉猛。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留珠闰,地道東北人惜浅。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像伏嗜,于是被迫代替她去往敵國和親坛悉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,771評(píng)論 25 707
  • 從三月份找實(shí)習(xí)到現(xiàn)在承绸,面了一些公司裸影,掛了不少,但最終還是拿到小米军熏、百度轩猩、阿里、京東荡澎、新浪均践、CVTE、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,213評(píng)論 11 349
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理摩幔,服務(wù)發(fā)現(xiàn)浊猾,斷路器,智...
    卡卡羅2017閱讀 134,633評(píng)論 18 139
  • v好感動(dòng)就吃飯回合肥該喝喝好吃不貴
    亮點(diǎn)02閱讀 176評(píng)論 0 0
  • ?——Command (?) ? ——Control ?——Option (alt) ?——Shift ?——Ca...
    NapoleonY閱讀 898評(píng)論 0 0