前言
不會有很多註釋
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需要,而且回調函數沒有()