Python tkinter GUI 基本用法

更新於 發佈於 閱讀時間約 15 分鐘

tkinter 所有元件:

raw-image
raw-image
  • 基本視窗:
import tkinter as tkroot = tk.Tk()#視窗標題
root.title('hello')#寬度 200
#高度 250
#螢幕位置 X 300
#螢幕位置 Y 400
root.geometry('200x250+300+400')#運行視窗
root.mainloop()




raw-image

1.BitmapImage:

#開啟檔案 images.xbm
#也可使用 bitmap = tk.BitmapImage(data=bitmapData)
bitmap = tk.BitmapImage(file='images.xbm')
tk.Label(root, image=bitmap).pack()




raw-image

2.Button:

def hello():
print('hello')#按下時會顯示 hello
tk.Button(root, text='Button1', command=hello).pack()





raw-image

3.Canvas:

#背景設為紅色
canvas = tk.Canvas(root, bg='red')
canvas.pack()#從 (0, 0) 位置畫線到 (200, 250) 位置
canvas.create_line(0, 0, 200, 250)#從 (200, 0) 位置畫線到 (0, 250) 位置
canvas.create_line(200, 0, 0, 250)




raw-image

4.Checkbutton:

def check():
#提取目前 var 內容
print(var.get())#設定變數 Int 型別儲存目前內容
var = tk.IntVar()#儲存的資料位置為 var
#勾選時值設為1 未勾選則設為0 每次按下皆顯示目前狀態
tk.Checkbutton(root, variable=var, text='Check', onvalue=1, offvalue=0, command=check).pack()



raw-image

5.Entry:

def check():
#提取目前內容
print(entry.get())entry = tk.Entry(root)
entry.pack()#按下時會顯示目前 Entry 內容
tk.Button(root, text='Button', command=check).pack()




raw-image

6.Frame:

#背景設為紅色
#創建可容納物件的框架
frame = tk.Frame(root, bg='red', width=100, height=100)
frame.pack()#把 Label 放入 Frame
tk.Label(frame, text='Label').place(x=30, y=0)




raw-image

7.Label:

tk.Label(root, text='Label').pack()






raw-image

8.LabelFrame:

#創建帶有標籤且可容納物件的框架
labelframe = tk.LabelFrame(root, text='Label Frame')
labelframe.pack()def check():
#提取目前 var 內容
print(var.get())#設定變數 Int 型別儲存目前內容
var = tk.IntVar()
tk.Checkbutton(labelframe, variable=var, text='Check', onvalue=1, offvalue=0, command=check).pack()



raw-image

9.Listbox:

#設定變數 String 型別儲存目前內容
var = tk.StringVar()#設置 var 內容
var.set(['box1', 'box2'])entry = tk.Entry(root)
entry.pack()def insert():
#將 Entry 的內容取出插入至 Listbox 的最後
listbox.insert('end', entry.get())tk.Button(root, text='Insert', command=insert).pack()#儲存的資料位置為 var
listbox = tk.Listbox(root, listvariable=var)
listbox.pack()

raw-image

10.Menu:

def hello():
print('hello')#創建菜單框架
menu = tk.Menu(root)#tearoff=False 關閉菜單裡的虛線欄
filemenu = tk.Menu(menu, tearoff=False)#將 filemenu 放入 menu 菜單
menu.add_cascade(menu=filemenu, label='File')#增加菜單選項
filemenu.add_command(label='Hello', command=hello)#增加分隔線
filemenu.add_separator()#增加菜單選項
filemenu.add_command(label='Exit', command=root.quit)#將 menu 菜單放入 root
root.config(menu=menu)

raw-image

11.Menubutton:

def hello():
print('hello')# relief='raised' 使外框凸起看起像Button
#創建一個 Menubutton 若裡面沒放物件則無法按下
menubutton = tk.Menubutton(root, text='Menubutton', relief='raised')
menubutton.pack()#創建一個 Menu 放入 Menubutton 裡面
menubutton.menu = tk.Menu(menubutton, tearoff=False)#固定進 menubutton
menubutton['menu'] = menubutton.menu#放入一個物件進 menubutton
menubutton.menu.add_command(label='Hello', command=hello)

raw-image

12.Message:

#設定變數 String 型別儲存目前內容
var = tk.StringVar()#設置 var 內容
var.set('Hello')#儲存的資料位置為 var
# relief='raised' 使外框凸起看起像Button
tk.Message(root, textvariable=var, relief='raised').pack()




raw-image

13.OptionMenu:

def check():
#提取目前 var 內容
print(var.get())#設定變數 String 型別儲存目前內容
var = tk.StringVar()#設置 var 內容
var.set('Hello')#儲存的資料位置為 var
# 'Hello', 'Option1', 'Option2', 'Option3' 為選項的內容
tk.OptionMenu(root, var, 'Hello', 'Option1', 'Option2', 'Option3').pack()#按下時會顯示目前選擇的內容
tk.Button(root, text='Check', command=check).pack()

raw-image

14.PanedWindow:

#背景設為紅色
panedwindow = tk.PanedWindow(bg='red')# fill='both' 向 x 軸和 y 軸填滿
# expand=1 開啟 fill
panedwindow.pack(fill='both', expand=1)#新增物件進 panedwindow
panedwindow.add(tk.Label(panedwindow, text='Label1', bg='orange'))#新增物件進 panedwindow
panedwindow.add(tk.Label(panedwindow, text='Label2', bg='yellow'))#創建新的 PanedWindow 物件 orient='vertical' 放置方式為垂直
newpaned = tk.PanedWindow(bg='black', orient='vertical')#新增物件進 panedwindow
panedwindow.add(newpaned)#新增物件進 newpaned
newpaned.add(tk.Label(newpaned, text='Label3', bg='greenyellow'))#新增物件進 newpaned
newpaned.add(tk.Label(newpaned, text='Label4', bg='lightblue'))

raw-image

15.PhotoImage:

#開啟檔案 images.png
#檔案 jpg png gif 中支援 png gif 不支援 jpg
image = tk.PhotoImage(file='images.png')
tk.Label(root, image=image).pack()





raw-image

16.Radiobutton:

def check():
#提取目前 var 內容
print(var.get())#設定變數 String 型別儲存目前內容
var = tk.StringVar()#設置 var 內容
var.set('A')#新增選項
tk.Radiobutton(root, variable=var, text='Option A', value='A').pack()#新增選項
tk.Radiobutton(root, variable=var, text='Option B', value='B').pack()#新增選項
tk.Radiobutton(root, variable=var, text='Option C', value='C').pack()#按下時會顯示目前選擇的內容
tk.Button(root, text='Check', command=check).pack()

raw-image

17.Scale:

# from_=0 從 0 開始
# to=100 到 100
# orient='horizontal' 水平對齊
# tickinterval=20 每 20 單位顯示標記
# resolution=0.1 移動最小單位為 0.1
# fill='x' 向 x 軸填滿
# showvalue=True 顯示目前的數字
tk.Scale(root, label='Scale', from_=0, to=100, orient='horizontal', tickinterval=20, resolution=0.1, showvalue=True).pack(fill='x')

raw-image

18.Scrollbar:

#可配合 listboxs/canvases/text 元件使用#創建 scrollbar
scrollbar = tk.Scrollbar(root)# side='right' 放入右邊
# fill='y' 向 y 軸填滿
scrollbar.pack(side='right', fill='y')#創建 listbox
listbox = tk.Listbox(root, yscrollcommand=scrollbar.set)
for i in range(20):
#插入內容到 listbox 尾端
listbox.insert('end', i)# side='left' 放入左邊
# fill='both' 向 x 軸和 y 軸填滿
# expand=1 開啟 fill
listbox.pack(side='left', fill='both', expand=1)# scrollbar 移動時使 listbox 跟著移動
scrollbar.config(command=listbox.yview)

raw-image

19.Spinbox:

# from_=0 從 0 開始
# to=100 到 100
tk.Spinbox(root, from_=0, to=100).pack()





raw-image

20.Text:

def insert():
#插入內容到 text 尾端
text.insert('end', 'hello')# width=20 寬度設為 20
# height=10 高度設為 10
text = tk.Text(root, width=20, height=10)
text.pack()#按下時會插入 hello 至 text
tk.Button(root, text='Insert', command=insert).pack()



raw-image

21.Toplevel:

tk.Label(root, text='Root label').pack()#創建 Toplevel
toplevel = tk.Toplevel()#寬度 200
#高度 250
#螢幕位置 X 500
#螢幕位置 Y 400
toplevel.geometry('200x250+500+400')#視窗標題
toplevel.title('Toplevel')tk.Label(toplevel, text='Toplevel label').pack()

























留言
avatar-img
留言分享你的想法!
avatar-img
John的沙龍
1會員
8內容數
John的沙龍的其他內容
2022/05/08
Button attribute ipadx為 Button 框內的距離 padx為 Button 框外距離 Window attribute
2022/05/08
Button attribute ipadx為 Button 框內的距離 padx為 Button 框外距離 Window attribute
2022/05/08
opencv is use BGR color matplotlib is use RGB color 顯示圖片 opencv matplotlib
2022/05/08
opencv is use BGR color matplotlib is use RGB color 顯示圖片 opencv matplotlib
2022/05/08
Java script 中有其中兩種宣告分別是 var 跟 let var 結果: let 結果: ** let 是一種區塊的變數宣告像是 if else while for 即跳出區塊時就無法取得資料
2022/05/08
Java script 中有其中兩種宣告分別是 var 跟 let var 結果: let 結果: ** let 是一種區塊的變數宣告像是 if else while for 即跳出區塊時就無法取得資料
看更多
你可能也想看
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
Python安裝、外部程式包安裝(pip install xxx)、Hello World 【安裝Python】 Visual Studio Code-Download 進入vscode(延伸模組) 安裝中文介面(輸入ch搜尋) 安裝 搜尋命令提示字元 命令提示字元打python 創建檔案
Thumbnail
Python安裝、外部程式包安裝(pip install xxx)、Hello World 【安裝Python】 Visual Studio Code-Download 進入vscode(延伸模組) 安裝中文介面(輸入ch搜尋) 安裝 搜尋命令提示字元 命令提示字元打python 創建檔案
Thumbnail
前言: 今天要講用python來做使用者介面,由於姆姆平常的工作面對是工廠產線生產,所以一般來說交付程式的時候會給(sample.py)或是(sample.pyc)這類的檔案格式,其中py和pyc檔簡單說,差別在一個看的到(py)原始碼一個看不到(pyc)。 TCL: 官方下載網址: PAGE:
Thumbnail
前言: 今天要講用python來做使用者介面,由於姆姆平常的工作面對是工廠產線生產,所以一般來說交付程式的時候會給(sample.py)或是(sample.pyc)這類的檔案格式,其中py和pyc檔簡單說,差別在一個看的到(py)原始碼一個看不到(pyc)。 TCL: 官方下載網址: PAGE:
Thumbnail
在先前的文章中,我們曾經實做過文字介面版本的密碼產生器,這篇文章中,我們將添加新的功能,包括記錄密碼使用場域的名稱、網址、帳號等,並能夠將以上記錄存檔,當然最重要的是將它轉換成友善的圖形介面。
Thumbnail
在先前的文章中,我們曾經實做過文字介面版本的密碼產生器,這篇文章中,我們將添加新的功能,包括記錄密碼使用場域的名稱、網址、帳號等,並能夠將以上記錄存檔,當然最重要的是將它轉換成友善的圖形介面。
Thumbnail
tkinter 所有元件: 基本視窗: 1.BitmapImage: 2.Button: 3.Canvas: 4.Checkbutton: 5.Entry: 6.Frame: 7.Label: 8.LabelFrame: 9.Listbox: 10.Menu: 11.Menubutton:
Thumbnail
tkinter 所有元件: 基本視窗: 1.BitmapImage: 2.Button: 3.Canvas: 4.Checkbutton: 5.Entry: 6.Frame: 7.Label: 8.LabelFrame: 9.Listbox: 10.Menu: 11.Menubutton:
Thumbnail
繼上一篇文章介紹了多種tkinter的視窗元件後,這篇我們再來討論三種視窗元件的配置方法以及優缺點,以適當移動各個元件到視窗中指定的位置,讓整個視窗版面的配置看起來更合理且美觀。
Thumbnail
繼上一篇文章介紹了多種tkinter的視窗元件後,這篇我們再來討論三種視窗元件的配置方法以及優缺點,以適當移動各個元件到視窗中指定的位置,讓整個視窗版面的配置看起來更合理且美觀。
Thumbnail
之前的文章中介紹過了Turtle Graphics,它是架構於tkinter模組之上以實現基本圖形介面的繪圖模組,這篇文章就來說明tkinter模組常用元件(widget)的基本用法,以及如何用它來設計出一個具有圖形使用者介面(Graphical User Interface, GUI)的程式。
Thumbnail
之前的文章中介紹過了Turtle Graphics,它是架構於tkinter模組之上以實現基本圖形介面的繪圖模組,這篇文章就來說明tkinter模組常用元件(widget)的基本用法,以及如何用它來設計出一個具有圖形使用者介面(Graphical User Interface, GUI)的程式。
Thumbnail
還記得之前介紹我的LINE Bot中第一個功能嗎?沒錯,就是部落格的選單,這選單看起來是不是比較華麗一點,但其實製作上相當簡單就可以完成,要如何製作就是我們今天要教的「客製化選單」
Thumbnail
還記得之前介紹我的LINE Bot中第一個功能嗎?沒錯,就是部落格的選單,這選單看起來是不是比較華麗一點,但其實製作上相當簡單就可以完成,要如何製作就是我們今天要教的「客製化選單」
Thumbnail
要可以寫出這個程式,我們首先必須要知道如何輸出字串到螢幕,以及知道要如何拿到使用者輸入的名字。 現在我們就來學習兩個python的內建函數print()和input()
Thumbnail
要可以寫出這個程式,我們首先必須要知道如何輸出字串到螢幕,以及知道要如何拿到使用者輸入的名字。 現在我們就來學習兩個python的內建函數print()和input()
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News