Python tkinter GUI 基本用法

閱讀時間約 16 分鐘
tkinter 所有元件:
21 種 GUI 元件
基本視窗
  • 基本視窗:
import tkinter as tkroot = tk.Tk()#視窗標題
root.title('hello')#寬度 200
#高度 250
#螢幕位置 X 300
#螢幕位置 Y 400
root.geometry('200x250+300+400')#運行視窗
root.mainloop()

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

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

Canvas展示
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)

Checkbutton展示
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()

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

Frame展示
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)

Label展示
7.Label:
tk.Label(root, text='Label').pack()

LabelFrame展示
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()

Listbox展示
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()

Menu展示
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)

Menubutton展示
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)

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

OptionMenu展示
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()

PanedWindow展示
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'))

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

Radiobutton展示
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()

Scale展示
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')

Scrollbar展示
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)

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

Text展示
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()

Toplevel展示
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()
為什麼會看到廣告
1會員
8內容數
留言0
查看全部
發表第一個留言支持創作者!
John的沙龍 的其他內容
opencv is use BGR color matplotlib is use RGB color 顯示圖片 opencv matplotlib
Java script 中有其中兩種宣告分別是 var 跟 let var 結果: let 結果: ** let 是一種區塊的變數宣告像是 if else while for 即跳出區塊時就無法取得資料
Max和Maximum的差別為 np.max() 最少接收一個參數,回傳所有內容的最大值 結果 np.maximum(A, B) 最少接收兩個參數,回傳A與B逐個比較的最大值 結果
tensorflow和numpy 中都有個argmax() 兩種用法都一樣(差別在tensorflow 要用sess.run()啟動)下面只展示numpy 用法如下 結果 **當axis=0時,會比對在column中最大數字回傳它的索引值
— extend() append() insert() 在 Python 中 List 是常常會用到的,其中 List 的一個功能是 extend 使用方法如下: 使用 String 型別 結果: extend將會分割每個字元放入 使用 List 型別 結果: extend將會把每個陣列內容放入
在寫Python時,常會遇到需要傳不固定的參數值,這時*args和**kwargs就發揮得很大的功效。 這兩個都是可變參數,不同的地方是: *args是非鍵值的參數,也就是傳一般的值但是長度是可變的 結果: 在此函數中我們固定了前兩個的傳值數量,剩下傳入的值都會歸args所有 結果 結果
opencv is use BGR color matplotlib is use RGB color 顯示圖片 opencv matplotlib
Java script 中有其中兩種宣告分別是 var 跟 let var 結果: let 結果: ** let 是一種區塊的變數宣告像是 if else while for 即跳出區塊時就無法取得資料
Max和Maximum的差別為 np.max() 最少接收一個參數,回傳所有內容的最大值 結果 np.maximum(A, B) 最少接收兩個參數,回傳A與B逐個比較的最大值 結果
tensorflow和numpy 中都有個argmax() 兩種用法都一樣(差別在tensorflow 要用sess.run()啟動)下面只展示numpy 用法如下 結果 **當axis=0時,會比對在column中最大數字回傳它的索引值
— extend() append() insert() 在 Python 中 List 是常常會用到的,其中 List 的一個功能是 extend 使用方法如下: 使用 String 型別 結果: extend將會分割每個字元放入 使用 List 型別 結果: extend將會把每個陣列內容放入
在寫Python時,常會遇到需要傳不固定的參數值,這時*args和**kwargs就發揮得很大的功效。 這兩個都是可變參數,不同的地方是: *args是非鍵值的參數,也就是傳一般的值但是長度是可變的 結果: 在此函數中我們固定了前兩個的傳值數量,剩下傳入的值都會歸args所有 結果 結果
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
在讀取檔案時,最怕路徑的問題,常常會有路徑錯誤造成的異常報錯。 為了避免諸如此類的問題發生,明白程式的當前目錄與檔案的路徑是很重要的。 可以利用os 模組是 Python 中的一個標準庫,提供了許多與操作系統的功能。 以下是一些常用的 os 模組基本操作及其範例: 1. os.getcwd
解讀JSON 字串 首先,你需要使用 Python 的 json 模組來解讀JSON 字串。 JSON的基本結構: 由花括號 {} 包圍,內部是鍵值對的集合,每個鍵值對之間用逗號分隔。 鍵是字串類型,值可以是任何JSON支持的資料類型(字串、數字、布林值、陣列、物件或 null)。 {
Thumbnail
繼上一篇文章介紹了多種tkinter的視窗元件後,這篇我們再來討論三種視窗元件的配置方法以及優缺點,以適當移動各個元件到視窗中指定的位置,讓整個視窗版面的配置看起來更合理且美觀。
Thumbnail
之前的文章中介紹過了Turtle Graphics,它是架構於tkinter模組之上以實現基本圖形介面的繪圖模組,這篇文章就來說明tkinter模組常用元件(widget)的基本用法,以及如何用它來設計出一個具有圖形使用者介面(Graphical User Interface, GUI)的程式。
Thumbnail
在上一篇教學中,我們教了大家如何自製客製化選單,今天我們來教最後一個常用基本功能,那就是「快速回覆」,這功能常用於同性質的關鍵字分支中做使用,像我就是用於三大法人籌碼中,分別區分成外資、投信、自營商等選項,所以也是一個相當實用的功能,我們就來開始教學吧!!
Thumbnail
還記得之前介紹我的LINE Bot中第一個功能嗎?沒錯,就是部落格的選單,這選單看起來是不是比較華麗一點,但其實製作上相當簡單就可以完成,要如何製作就是我們今天要教的「客製化選單」
Thumbnail
在前幾篇基本教學中,我們想要LINE Bot回覆某個功能時,都必須要自行手動輸入特定關鍵字,但有時候我們卻希望輸入指令後,LINE Bot回覆的是「選單」功能,可以讓我們進行多樣化的選擇,不需要每個指令都手動輸入,可以讓操作上更加便利
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
在讀取檔案時,最怕路徑的問題,常常會有路徑錯誤造成的異常報錯。 為了避免諸如此類的問題發生,明白程式的當前目錄與檔案的路徑是很重要的。 可以利用os 模組是 Python 中的一個標準庫,提供了許多與操作系統的功能。 以下是一些常用的 os 模組基本操作及其範例: 1. os.getcwd
解讀JSON 字串 首先,你需要使用 Python 的 json 模組來解讀JSON 字串。 JSON的基本結構: 由花括號 {} 包圍,內部是鍵值對的集合,每個鍵值對之間用逗號分隔。 鍵是字串類型,值可以是任何JSON支持的資料類型(字串、數字、布林值、陣列、物件或 null)。 {
Thumbnail
繼上一篇文章介紹了多種tkinter的視窗元件後,這篇我們再來討論三種視窗元件的配置方法以及優缺點,以適當移動各個元件到視窗中指定的位置,讓整個視窗版面的配置看起來更合理且美觀。
Thumbnail
之前的文章中介紹過了Turtle Graphics,它是架構於tkinter模組之上以實現基本圖形介面的繪圖模組,這篇文章就來說明tkinter模組常用元件(widget)的基本用法,以及如何用它來設計出一個具有圖形使用者介面(Graphical User Interface, GUI)的程式。
Thumbnail
在上一篇教學中,我們教了大家如何自製客製化選單,今天我們來教最後一個常用基本功能,那就是「快速回覆」,這功能常用於同性質的關鍵字分支中做使用,像我就是用於三大法人籌碼中,分別區分成外資、投信、自營商等選項,所以也是一個相當實用的功能,我們就來開始教學吧!!
Thumbnail
還記得之前介紹我的LINE Bot中第一個功能嗎?沒錯,就是部落格的選單,這選單看起來是不是比較華麗一點,但其實製作上相當簡單就可以完成,要如何製作就是我們今天要教的「客製化選單」
Thumbnail
在前幾篇基本教學中,我們想要LINE Bot回覆某個功能時,都必須要自行手動輸入特定關鍵字,但有時候我們卻希望輸入指令後,LINE Bot回覆的是「選單」功能,可以讓我們進行多樣化的選擇,不需要每個指令都手動輸入,可以讓操作上更加便利