[Python GUI]Python內建圖形介面tkinter--入門1

ayiya_Oese發表於2020-12-14

前言

本文僅是個人對tkinter學習過程的一些記錄,可能有誤解之處,煩請指教。如果覺得有可看之處,請多鼓勵,後續會持續完善。


一、tkinter是什麼?

tkinter軟體包是Tk GUI工具包的標準Python介面。 Tk和tkinter在大多數Unix平臺以及Windows系統上都可用。

二、使用步驟

1. 安裝

tkinter作為python的標準GUI介面,在安裝python的時候就已經預設安裝,除非你自己手動取消安裝。
可以通過命令列輸入python -m tkinter開啟一個簡單的Tk視窗。如果可以通過命令列正常開啟這個Tk視窗,表明你已經安裝了該包;否則你需要自己安裝該包。
參考:在windows上安裝tkinter

在Linux可以通過以下方式安裝:

#python2
sudo apt-get install python-tk
#python3
sudo apt-get install python3-tk

本文涉及程式碼全部在python3 下執行

2.引入庫

程式碼如下(示例):

import tkinter as tk

3.簡單示例

本文以開發一個登陸介面為目的,學習所需的各個元素。
那麼先思考一下,一個登陸介面需要哪些元素呢?

  1. 一個主介面;
  2. 視窗名;
  3. 設定視窗寬高
  4. 賬號密碼文字提示;
  5. 賬號密碼輸入框;
  6. 登陸按鈕;
  7. 提示對話方塊

OK,先搞定這5個小部分,一個簡單的GUI登陸介面就出來了
登陸介面UI
哇,這UI,設計的也太完美了吧。
100婚

程式碼如下(示例):

import tkinter as tk

# 1. 一個主介面;
main_win = tk.Tk()
# 2. 視窗名;
main_win.title("登陸介面")
# 3. 設定視窗寬高
main_win.geometry('400x300')
# 視窗持續顯示
main_win.mainloop()

登陸介面
咦?怎麼是一片空白?
對話方塊出來了,不過裡面現在還是空空如也,接下來就要慢慢新增各個元素了。

import tkinter as tk
from tkinter import messagebox
# 1. 一個主介面;
main_win = tk.Tk()
# 2. 視窗名;
main_win.title("登陸介面")
# 3. 設定視窗寬高
main_win.geometry('400x300')
# 4. 賬號密碼文字;
accoun_label = tk.Label(main_win, text="賬號:", font=('Arial', 12)).pack()
pwd_label = tk.Label(main_win, text="密碼:", font=('Arial', 12)).pack()
# 5. 賬號密碼輸入框;
accoun_var = tk.StringVar()
pwd_var = tk.StringVar()
accoun_entry = tk.Entry(main_win, textvariable=accoun_var, show=None, font=('Arial', 14)).pack()
pwd_entry = tk.Entry(main_win, textvariable=pwd_var, show='*', font=('Arial', 14)).pack()
# 6. 登陸按鈕;
login_btn = tk.Button(main_win, text='登 陸').pack()
# 7. 提示對話方塊
messagebox.showinfo(title='提示框', message='登陸成功!')
# 視窗持續顯示
main_win.mainloop()

登入介面
嗯!總算是有毛有腳了,接下來就是佈局了。

import tkinter as tk
from tkinter import messagebox

def show_info_box():
    # 7. 提示對話方塊
    return messagebox.showinfo(title='提示框', message='登陸成功!')

# 1. 一個主介面;
main_win = tk.Tk()
# 2. 視窗名;
main_win.title("登陸介面")
# 3. 設定視窗寬高
main_win.geometry('400x300')
# 4. 賬號密碼文字;
accoun_label = tk.Label(main_win, text="賬號:", font=('Arial', 12)).place(x=70, y=80)
pwd_label = tk.Label(main_win, text="密碼:", font=('Arial', 12)).place(x=70, y=120)
# 5. 賬號密碼輸入框;
accoun_var = tk.StringVar()
pwd_var = tk.StringVar()
accoun_entry = tk.Entry(main_win, textvariable=accoun_var, show=None, font=('Arial', 14)).place(x=120, y=80)
pwd_entry = tk.Entry(main_win, textvariable=pwd_var, show='*', font=('Arial', 14)).place(x=120, y=120)
# 6. 登陸按鈕;
login_btn = tk.Button(main_win, text='登 陸',width=20, command=show_info_box).place(x=120, y=200)
# 視窗持續顯示
main_win.mainloop()

在這裡插入圖片描述
完美復現,毫無瑕疵
開個玩笑。這個介面不僅簡單還沒有任何實際功能,還需要後續不斷學習不斷完善。


總結

  1. 主視窗及其標題和寬高 tkinter.Tk()mainloop()持續顯示
  2. 文字顯示 Label
  3. 元件視覺化需要使用 .pack(),或者 .place() 設定固定位置
  4. 輸入框 Entry,及其回顯: show 引數(屬性)
  5. 按鈕 Button,繫結觸發函式使用: command
  6. 對話方塊 messagebox.showinfo,需先 from tkinter import messagebox
    對話方塊如果不是 from tkinter import messagebox ,而是使用 tk.messagebox.showinfo(title='提示框', message='登陸成功!'),則會報錯。
    報錯資訊:AttributeError: module 'tkinter' has no attribute 'messagebox'

以上就是今天所學的內容,本文僅僅簡單介紹了tkinter的使用,多使用tkinter以找到一種靈活的使用方式,tkinter的其他功能還需要繼續探索。

相關文章