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()
為什麼會看到廣告
avatar-img
1會員
8內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
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
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
from win32com.client import Dispatch path = "D:\PROGRAMMING\PythonCode\pypptx\image1.png" # 启动PowerPoint应用程序 ppt = Dispatch('PowerPoint.Applicatio
Thumbnail
什麼是Python python是電腦程式語言的一種,如同python官方網站上的介紹 "Python是一種程式語,可讓你更快速地工作並更有效的整合系統"。簡單地說,就是你可用python這個程式語言去告訴電腦你想要作什麼,讓電腦來幫你完成你要作的事情。
Thumbnail
本篇教學將教你如何建立和使用 textbutton,讓你可以使用文字快速建立玩家可以點擊的按鈕,並提供瞭如何更改按鈕文字和自訂點擊按鈕後的動作。
Thumbnail
今天來介紹python的函式 函式在python中是非常重要的一環,因為到了後期,程式會越來越複雜。 而函式可以想成是容易管理的小程式,當我們需要使用時,只需呼叫即可。
Thumbnail
本文詳細解說了 Python print() 函數的各種隱藏語法,包括 value、sep、end、file 和 flush。作者以清晰的範例和解說,讓從未接觸程式語言的人也能夠理解。而最後提到了訂閱房間的付費方式,並歡迎大家訂閱。文章內容較為詳細,提供了豐富的資訊。
Thumbnail
本篇文章將教你如何使用Python和PyQt5來建立一個GUI應用程式。PyQt5是一個相當流行的Python模組,透過這個文章你將學習如何使用它來建立一個互動式的應用程式。
Thumbnail
先前我們談論到靜態方法就像是定義工具箱一樣,那麼抽象方法就像是共用表格的概念,例如註冊帳號時會填寫的一些基本資料,就有包含制式的表格,裡面有需填寫的欄位,例如姓名,性別等。
Thumbnail
本文介紹了Python中函式引數的*args和**kwargs用法,通過*args處理可變數量的位置引數,通過**kwargs處理可變數量的關鍵字引數。不僅介紹了相應的語法和程式範例,還解釋了它們的順序問題和建議的慣例用法。
Thumbnail
Python 裝飾器(Decorator),它能夠讓你在不改變原始函式的情況下,增加額外的功能。本文將介紹 Python 裝飾器(Decorator)的基本概念、實現方式,並提供實際應用範例讓你更好了解Python 裝飾器。
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
from win32com.client import Dispatch path = "D:\PROGRAMMING\PythonCode\pypptx\image1.png" # 启动PowerPoint应用程序 ppt = Dispatch('PowerPoint.Applicatio
Thumbnail
什麼是Python python是電腦程式語言的一種,如同python官方網站上的介紹 "Python是一種程式語,可讓你更快速地工作並更有效的整合系統"。簡單地說,就是你可用python這個程式語言去告訴電腦你想要作什麼,讓電腦來幫你完成你要作的事情。
Thumbnail
本篇教學將教你如何建立和使用 textbutton,讓你可以使用文字快速建立玩家可以點擊的按鈕,並提供瞭如何更改按鈕文字和自訂點擊按鈕後的動作。
Thumbnail
今天來介紹python的函式 函式在python中是非常重要的一環,因為到了後期,程式會越來越複雜。 而函式可以想成是容易管理的小程式,當我們需要使用時,只需呼叫即可。
Thumbnail
本文詳細解說了 Python print() 函數的各種隱藏語法,包括 value、sep、end、file 和 flush。作者以清晰的範例和解說,讓從未接觸程式語言的人也能夠理解。而最後提到了訂閱房間的付費方式,並歡迎大家訂閱。文章內容較為詳細,提供了豐富的資訊。
Thumbnail
本篇文章將教你如何使用Python和PyQt5來建立一個GUI應用程式。PyQt5是一個相當流行的Python模組,透過這個文章你將學習如何使用它來建立一個互動式的應用程式。
Thumbnail
先前我們談論到靜態方法就像是定義工具箱一樣,那麼抽象方法就像是共用表格的概念,例如註冊帳號時會填寫的一些基本資料,就有包含制式的表格,裡面有需填寫的欄位,例如姓名,性別等。
Thumbnail
本文介紹了Python中函式引數的*args和**kwargs用法,通過*args處理可變數量的位置引數,通過**kwargs處理可變數量的關鍵字引數。不僅介紹了相應的語法和程式範例,還解釋了它們的順序問題和建議的慣例用法。
Thumbnail
Python 裝飾器(Decorator),它能夠讓你在不改變原始函式的情況下,增加額外的功能。本文將介紹 Python 裝飾器(Decorator)的基本概念、實現方式,並提供實際應用範例讓你更好了解Python 裝飾器。