python內置界面開發模塊Tkinter的簡單使用

前言

不會有很多註釋
python在界面開發這一塊是沒有什麼優勢的,但是當我們一些小項目需要可視化或者給別人使用的時候用python自帶的模塊會比較合適
但是我們不要在意太多細節,因爲Tkinter還是有許多被吐槽的地方,只需堅持一個原則:能跑就行

主窗口

import tkinter as tk
window = tk.Tk()
window.title('window')
window.geometry('200x100+0+0') ##寬x高+x+y
"""
這裏塞部件
"""
window.mainloop()

Button按鈕

def callback():
	pass
Button = tk.Button(window, text='static text', command=callback)
Button.place(x=100, y=100, width=40, height=25)

Label標籤

Label部件只用於顯示文本,文本不可複製
如果文本固定不變,用不打註釋的
如果文本會變,用打註釋的

Label = tk.Label(window, text='static text')
Label.place(x=100, y=100, width=40, height=25)
#content = tk.StringVar() 
#Label = tk.Label(window, textvariable=content)
#Label.place(x=100, y=100, width=40, height=25)

知識點一:文本可變用textvariable = tk.StringVar()
賦值用下面語句

content.set("new content")
#content.get()

Text編輯框

Text不可用textvariable=content,也不可用Text.get()直接獲取值

Text = tk.Text(window)
Text.place(x=100, y=100, width=40, height=25)

知識點二:Text不可用textvariable=content來改變文本
改變文本的方法如下

#Text.delete(0.0, tk.END)
Text.insert("insert", "追加的文本")
#Text.get(0.0, tk.END)

Entry輸入框

Entry部件和Text有一些區別:文本要換行用Text,輸入密碼用Entry
獲取文本有兩種方法

Entry = tk.Entry(window)
Entry.place(x=100, y=100, width=40, height=25)

知識點三:有換行、複製需求要用Text
獲取值、賦值用下面語句

content = tk.StringVar()
Entry = tk.Entry(window,textvariable=content)
Entry.place(x=100, y=100, width=40, height=25)
content.get()

#Entry.get()

ListBox列表

如果要顯示很多列數據而且要便於複製可以用Text、也可以用Listbox
區別是Listbox你點擊會有選中一行,Text會選中一個單詞,而且Text可編輯
Text的這些特性不代表它功能弱於Listbox,如果你要一行顯示兩列數據,那麼使用Text會更方便複製

contents = tk.StringVar()
contents.set(("第一行","第二行","第三行"))
ListBox = tk.Listbox(window, listvariable=contents)  #將var2的值賦給Listbox
ListBox.place(x=100, y=100, width=40, height=25)

ListBox可以很方便地進行增刪
知識點四:對ListBox項目進行修改

ListBox.insert('end',"最後一行")
ListBox.delete(2)

RadioButton單選框

所有地單選框只能同時選中一個

content = tk.StringVar()
Radiobutton1 = tk.Radiobutton(window, text='單選框1', variable=content, value='1')
Radiobutton1.place(x=100, y=100, width=40, height=25)

Radiobutton2 = tk.Radiobutton(window, text='單選框2', variable=content, value='2')
Radiobutton2.place(x=100, y=100, width=40, height=25)

CheckButton多項框

content = tk.IntVar()
CheckButton = tk.Checkbutton(window, text='複選框1', variable=content, onvalue=1, offvalue=0)
CheckButton.place(x=100, y=100, width=40, height=25)

知識點五: tk變量不全是StringVar,還有IntVar(),根據需要使用

MessageBox

如果要彈窗提示用戶信息,使用MessageBox,唯一缺點就是彈窗的內容不可以複製

tkinter.messagebox.showinfo('提示',"30 error 25 warning ")

總結

Tkinter基本組件就這幾個,多的不要學了,高級功能也不要碰(比如快捷鍵,不太好使)
下面總結一下上面組件的用處和缺點

組件 用處 獲取組件內容 缺陷
MessageBox 提示信息,特別是錯誤信息 ---------- 信息內文字不可複製
Button 觸發事件 ---------- --------
Label 顯示不可複製的文字 ---------- 不可複製
Text 編輯文字、顯示文字 Text.get(0.0, tk.END) 不可用變量替代文本
Entry 編輯文字、顯示文字 Entry.get() 或 content.get()
ListBox 顯示列表信息 contents.get() ----
RadioBottun 獲取用戶選擇 content.get() ----
CheckButton 獲取用戶選擇 content.get() ----

小提示

很多組件建立的時候都可以加command=callback
但是基本上只有Button和BadioButton需要,而且回調函數沒有()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章