Python GUI之Tkiner實戰
阿新 • • 發佈:2020-11-22
前言
Tkinter 是 Python 的標準 GUI 庫。Python 使用 Tkinter 可以快速的建立 GUI 應用程式。
由於 Tkinter 是內建到 python 的安裝包中、只要安裝好 Python 之後就能 import Tkinter 庫、而且 IDLE 也是用 Tkinter 編寫而成、對於簡單的圖形介面 Tkinter 還是能應付自如。
語法
部件
Tkinter提供了各種控制元件,例如GUI應用程式中使用的按鈕,標籤和文字框。這些控制元件通常稱為小部件。
Tkinter當前有15種類型的小部件。下表中列出了這些小部件以及簡要說明-
部件 | 描述 |
---|---|
Button | 按鈕控制元件;在程式中顯示按鈕。 |
Canvas | 畫布控制元件;顯示圖形元素如線條或文字 |
Checkbutton | 多選框控制元件;用於在程式中提供多項選擇框 |
Entry | 輸入控制元件;用於顯示簡單的文字內容 |
Frame | 框架控制元件;在螢幕上顯示一個矩形區域,多用來作為容器 |
Label | 標籤控制元件;可以顯示文字和點陣圖 |
Listbox | 列表框控制元件;在Listbox視窗小部件是用來顯示一個字串列表給使用者 |
Menubutton | 選單按鈕控制元件,用於顯示選單項。 |
Menu | 選單控制元件;顯示選單欄,下拉選單和彈出選單 |
Message | 訊息控制元件;用來顯示多行文字,與label比較類似 |
Radiobutton | 單選按鈕控制元件;顯示一個單選的按鈕狀態 |
Scale | 範圍控制元件;顯示一個數值刻度,為輸出限定範圍的數字區間 |
Scrollbar | 滾動條控制元件,當內容超過視覺化區域時使用,如列表框。. |
Text | 文字控制元件;用於顯示多行文字 |
Toplevel | 容器控制元件;用來提供一個單獨的對話方塊,和Frame比較類似 |
Spinbox | 輸入控制元件;與Entry類似,但是可以指定輸入範圍值 |
PanedWindow | PanedWindow是一個窗口布局管理的外掛,可以包含一個或者多個子控制元件。 |
LabelFrame | labelframe 是一個簡單的容器控制元件。常用與複雜的窗口布局。 |
tkMessageBox | 用於顯示你應用程式的訊息框。 |
標準屬性
讓我們看一下如何指定它們的一些常見屬性,例如大小,顏色和字型。
屬性 | 描述 |
---|---|
屬性 | 描述 |
Dimension | 控制元件大小; |
Color | 控制元件顏色; |
Font | 控制元件字型; |
Anchor | 錨點; |
Relief | 控制元件樣式; |
Bitmap | 點陣圖; |
Cursor | 游標; |
幾何管理
所有的Tkinter小部件都可以訪問特定的幾何管理方法,該方法的目的是在整個父小部件區域中組織小部件。Tkinter公開以下幾何圖形管理器類:包裝,網格和位置。
幾何方法 | 描述 |
---|---|
pack() | 包裝; |
grid() | 網格; |
place() | 位置; |
示例
#!/usr/bin/python
# -*- coding: utf-8 -*-
# author:Huny
import tkinter as tk
import tkinter.messagebox
#例項物件
window = tk.Tk()
#標題
window.title('Huny之家')
window.geometry('500x300')
#載入圖片
canvas = tk.Canvas(window,width=400,height=135,bg='green')#建立畫布
image_file = tk.PhotoImage(file='pic.gif')#新增圖片的路徑
image = canvas.create_image(200,0,anchor='n',image=image_file)#建立圖片並宣告大小和位置以及圖片的路徑
canvas.pack(side='top')
tk.Label(window,text='Wellcome',font=('Arial',16)).pack()#宣告一個小部件並放在父部件window中
#名稱
tk.Label(window,text='使用者名稱').place(x=50,y=165)
tk.Label(window,text='密碼').place(x=50,y=200)
#文字和密碼輸入框、登入按鈕
var_usr_name = tk.StringVar()#記錄輸入值的變數
var_usr_name.set('huny')#設定預設使用者名稱
e1 =tk.Entry(window, textvariable=var_usr_name,font=('Arial',14))#定義一個文字框和字型,接受文字框中的值
var_usr_pwd = tk.StringVar()
e2 =tk.Entry(window, textvariable=var_usr_pwd,font=('Arial',14))
e1.pack()#將小部件組織成塊,然後再將其放置在主小部件中
e2.pack()
#登入彈窗提示功能
def login():
usr_name = var_usr_name.get()
usr_pwd = var_usr_pwd.get()
user_info = {'huny':'123456'}
if usr_name in user_info:
if usr_pwd == '123456':
tkinter.messagebox.showinfo(title='歡迎來到Huny之家',message='登入成功!')#正確的彈窗提示
else:
tkinter.messagebox.showerror(title='提醒',message='密碼錯誤!')#錯誤的彈窗提示
else:
tkinter.messagebox.showerror(title='提醒',message='使用者名稱錯誤')#錯誤的彈窗提示
e3 = tk.Button(window,text="登入",width=10,height=2,command=login)#宣告一個按鈕部件
e3.pack()
window.mainloop()#迴圈執行
簡單的登入介面判斷