01-從一個案例開始上手tkinter

1. 概述

1.1 案例說明

現(xiàn)在纤怒,通過一個簡易的用戶登錄窗口的實現(xiàn)糯而,快速上手tkinter。
可以在登錄窗口輸入用戶名泊窘、密碼進行登錄熄驼,用戶名像寒、密碼符合要求,則顯示OK消息瓜贾,反之則顯示Error消息诺祸。如下面圖片所示:

login.png
ok.png
error.png

2. 熟悉常用的基本組件

俗話說“磨刀不誤砍柴工”,在進行案例代碼編寫前祭芦,先花點時間完成下面6個代碼段的練習筷笨,熟悉這些基本組件的使用方法。

2.1 定義并顯示主窗口

# 導入tkinter庫
import tkinter
window = tkinter.Tk()
# 設(shè)置窗口title
window.title('my window')
# 設(shè)置窗口大小
window.geometry('200x120')
# 顯示主窗口
window.mainloop()

運行結(jié)果如下:


空窗體

2.2 lable標簽

import tkinter
window = tkinter.Tk()
window.title('my window')
window.geometry('200x180')

l = tkinter.Label(window,
    text='This is Label!',    # 標簽的文字
    bg='pink',     # 背景顏色
    font=('Arial', 12),     # 字體和字體大小
    width=15, height=2  # 標簽長寬
    )
# 固定窗口位置
l.pack()

window.mainloop()

運行結(jié)果如下:


label.png

2.3. pack&grid&place 組件布局

import tkinter
window = tkinter.Tk()
window.title('my window')
window.geometry('200x180')

# pack布局
l1 = tkinter.Label(window,text='This is Label!',bg='pink',width=15, height=2)
l1.pack(side='bottom')

# grid布局
# for i in range(4):
#     for j in range(3):
#         tkinter.Label(window, text=1).grid(row=i,  # 行
#                                            column=j,  # 列
#                                            padx=10,  # 單元格左右間距
#                                            pady=10  # 單元格上下間距
#                                            )

# place布局
l2 = tkinter.Label(window, text='This is Label2!', justify=tkinter.RIGHT, width=50)
l2.place(x=40, y=50,   # 設(shè)置x实束,y坐標
         width=100, height=30  # 設(shè)置長寬
         )

window.mainloop()

運行結(jié)果如下:


image1.png

注釋pack布局代碼奥秆,去除grid布局代碼注釋,然后運行咸灿,運行結(jié)果如下:


image2.png

2.4. Button按鈕

import tkinter
window = tkinter.Tk()
window.title('my window')
window.geometry('200x120')

# 定義button
b = tkinter.Button(window,
                   text='退出',  # 按鈕的文字
                   bg='pink',  # 背景顏色
                   width=15, height=2,  # 設(shè)置長寬
                   command=window.quit  # 響應事件:關(guān)閉窗口
                   )
b.pack()

window.mainloop()

運行結(jié)果如下:


button.png

2.5. Entry&Text輸入框與文本框

import tkinter
window = tkinter.Tk()
window.title('my window')
window.geometry('200x200')


def plus():
    n1 = e1.get()  # 獲取輸入框1的值
    n2 = e2.get()  # 獲取輸入框2的值
    t.delete(1.0, 'end')  # 清除文本框內(nèi)容
    t.insert('insert', int(n1)+int(n2))  # 將結(jié)果添加到文本框顯示


l1 = tkinter.Label(window, text='輸入數(shù)字1')
l1.pack()
# 定義輸入框1
e1 = tkinter.Entry(window, width=15)
e1.pack()
# 定義輸入框2
l2 = tkinter.Label(window, text='輸入數(shù)字2')
l2.pack()
e2 = tkinter.Entry(window, width=15)
e2.pack()

b1 = tkinter.Button(window, text="計算兩數(shù)之和", command=plus)
b1.pack()
# 定義文本框
t = tkinter.Text(window, 
                 state='normal',  # 有disabled构订、normal 兩個狀態(tài)值,默認為normal
                 width=15, height=2
                 )
t.pack()
b2 = tkinter.Button(window, text='退出', command=window.quit)
b2.pack()

window.mainloop()

運行結(jié)果如下:


Entry&Text.png

2.6. messagebox消息對話框

import tkinter
import tkinter.messagebox
window = tkinter.Tk()
window.title('my window')
window.geometry('200x100')


def say_hello():
    tkinter.messagebox.showinfo(title='my message', message='hello!')


# 定義消息對話框
b = tkinter.Button(window, text="click", command=say_hello)
b.pack()

window.mainloop()

運行結(jié)果如下:


image.png
messagebox.png

3. 案例代碼實現(xiàn)

import tkinter
import tkinter.messagebox


# 用戶登錄驗證
def login():
    name = entryName.get()
    pwd = entryPwd.get()
    if name == 'admin' and pwd == '123456':
        tkinter.messagebox.showinfo(title='userlogin', message='ok')
    else:
        tkinter.messagebox.showerror(title='userlogin', message='Error')
# 清空用戶輸入的用戶名和密碼
def cancel():
    varName.set('')
    varPwd.set('')


window = tkinter.Tk()
window.title('my window')
window.geometry('200x120')
varName = tkinter.StringVar(value='')
varPwd = tkinter.StringVar(value='')
# 創(chuàng)建標簽
labelName = tkinter.Label(window, text='User Name', justify=tkinter.RIGHT, width=80)
# 將標簽放到窗口上
labelName.place(x=10, y=5, width=80, height=20)
# 創(chuàng)建文本框避矢,并設(shè)置關(guān)聯(lián)的變量
entryName = tkinter.Entry(window, width=80, textvariable=varName)
entryName.place(x=100, y=5, width=80, height=20)

labelPwd = tkinter.Label(window, text='User Pwd:', justify=tkinter.RIGHT, width=80)
labelPwd.place(x=10, y=30, width=80, height=20)
# 創(chuàng)建密碼文本框
entryPwd = tkinter.Entry(window, show='*', width=80, textvariable=varPwd)
entryPwd.place (x=100, y=30, width=80, height=20)
# 創(chuàng)建按鈕組件悼瘾,同時設(shè)置按鈕事件處理函數(shù)
buttonOk = tkinter.Button(window, text='Login', command=login)
buttonOk.place(x=30, y=70, width=50, height=20)
buttonCancel = tkinter.Button(window, text='Cancel', command=cancel)
buttonCancel.place(x=90, y=70, width=50, height=20)
# 啟動消息循環(huán)
window .mainloop()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市审胸,隨后出現(xiàn)的幾起案子亥宿,更是在濱河造成了極大的恐慌,老刑警劉巖砂沛,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件烫扼,死亡現(xiàn)場離奇詭異,居然都是意外死亡碍庵,警方通過查閱死者的電腦和手機映企,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來静浴,“玉大人堰氓,你說我怎么就攤上這事∑幌恚” “怎么了双絮?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長得问。 經(jīng)常有香客問我囤攀,道長,這世上最難降的妖魔是什么宫纬? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任抚岗,我火速辦了婚禮,結(jié)果婚禮上哪怔,老公的妹妹穿的比我還像新娘宣蔚。我一直安慰自己,他們只是感情好认境,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布胚委。 她就那樣靜靜地躺著,像睡著了一般叉信。 火紅的嫁衣襯著肌膚如雪亩冬。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天硼身,我揣著相機與錄音硅急,去河邊找鬼。 笑死佳遂,一個胖子當著我的面吹牛营袜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播丑罪,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼荚板,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了吩屹?” 一聲冷哼從身側(cè)響起跪另,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎煤搜,沒想到半個月后免绿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡擦盾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年嘲驾,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片厌衙。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡距淫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出婶希,到底是詐尸還是另有隱情榕暇,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布喻杈,位于F島的核電站彤枢,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏筒饰。R本人自食惡果不足惜缴啡,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瓷们。 院中可真熱鬧业栅,春花似錦秒咐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至帮孔,卻和暖如春雷滋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背文兢。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工晤斩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人姆坚。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓澳泵,卻偏偏與公主長得像,于是被迫代替她去往敵國和親旷偿。 傳聞我的和親對象是個殘疾皇子烹俗,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354

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

  • 判斷一個人愛不愛你很簡單幢妄,就是看他跟你在一起,會不會總是玩手機------ 小悅愛上了一個人茫负,男生約她出去吃了幾次...
    毛菲瑜閱讀 765評論 0 1
  • 1.1 1.2 1.3 2.1 1.1 問題:腰部突出 原因:大腿后側(cè)緊 調(diào)整:臀部下方墊磚 推...
    幾木x閱讀 562評論 1 0
  • 在這個雨水漸多蕉鸳,乍寒乍暖的節(jié)氣里,只感受了一日的陽光晴好忍法,隨后北方也終于迎來了一場真正意義上的初雪潮尝。空兀兀的枝椏灰...
    而冬閱讀 176評論 0 0
  • 自定義二級列表 public class MyExpandableListView extends Expanda...
    巡皇wx閱讀 329評論 0 0
  • 一個被管制太多的孩子饿序,他會逐漸從權(quán)威家長手下的聽差勉失,變成自身壞習慣的奴隸,他的壞習慣正是束縛他的原探,讓他痛苦的桎梏乱凿。...
    潼寶的開心果閱讀 118評論 0 0