(Python3)- tkinter 滾動文字圖形界面(ScrolledText)
(Python3)- tkinter 滾動文字圖形界面(ScrolledText)
# -*- coding: utf-8 -*-
import tkinter as tk
from tkinter import ttk
from tkinter import scrolledtext # 導入滾動文字方塊的模組
win = tk.Tk()
win.title("Python GUI") # 添加標題
ttk.Label(win, text="Chooes a number").grid(column=1, row=0) # 添加一個標籤,並將其列設置為1,行設置為0
ttk.Label(win, text="Enter a name:").grid(column=0, row=0) # 設置其在介面中出現的位置 column代表列 row 代表行
# button被點擊之後會被執行
def clickMe(): # 當acction被點擊時,該函數則生效
action.configure(text='Hello ' + name.get() + ' ' + numberChosen.get()) # 設置button顯示的內容
print('check3 is %s %s' % (type(chvarEn.get()), chvarEn.get()))
# 按鈕
action = ttk.Button(win, text="Click Me!", command=clickMe) # 創建一個按鈕, text:顯示按鈕上面顯示的文字, command:當這個按鈕被點擊之後會調用command函數
action.grid(column=2, row=1) # 設置其在介面中出現的位置 column代表列 row 代表行
# 文字方塊
name = tk.StringVar() # StringVar是Tk庫內部定義的字串變數類型,在這裡用於管理部件上面的字元;不過一般用在按鈕button上。改變StringVar,按鈕上的文字也隨之改變。
nameEntered = ttk.Entry(win, width=12, textvariable=name) # 創建一個文字方塊,定義長度為12個字元長度,並且將文字方塊中的內容綁定到上一句定義的name變數上,方便clickMe調用
nameEntered.grid(column=0, row=1) # 設置其在介面中出現的位置 column代表列 row 代表行
nameEntered.focus() # 當程式運行時,遊標預設會出現在該文字方塊中
# 創建一個下拉清單
number = tk.StringVar()
numberChosen = ttk.Combobox(win, width=12, textvariable=number, state='readonly')
numberChosen['values'] = (1, 2, 4, 42, 100) # 設置下拉清單的值
numberChosen.grid(column=1, row=1) # 設置其在介面中出現的位置 column代表列 row 代表行
numberChosen.current(0) # 設置下拉清單預設顯示的值,0為 numberChosen['values'] 的下標值
# 核取方塊
chVarDis = tk.IntVar() # 用來獲取核取方塊是否被勾選,通過chVarDis.get()來獲取其的狀態,其狀態值為int類型 勾選為1 未勾選為0
check1 = tk.Checkbutton(win, text="Disabled", variable=chVarDis, state='disabled') # text為該核取方塊後面顯示的名稱, variable將該核取方塊的狀態賦值給一個變數,當state='disabled'時,該核取方塊為灰色,不能點的狀態
check1.select() # 該核取方塊是否勾選,select為勾選, deselect為不勾選
check1.grid(column=0, row=4, sticky=tk.W) # sticky=tk.W 當該列中其他行或該行中的其他列的某一個功能拉長這列的寬度或高度時,設定該值可以保證本行保持左對齊,N:北/上對齊 S:南/下對齊 W:西/左對齊 E:東/右對齊
chvarUn = tk.IntVar()
check2 = tk.Checkbutton(win, text="UnChecked", variable=chvarUn)
check2.deselect()
check2.grid(column=1, row=4, sticky=tk.W)
chvarEn = tk.IntVar()
check3 = tk.Checkbutton(win, text="Enabled", variable=chvarEn)
check3.select()
check3.grid(column=2, row=4, sticky=tk.W)
# 選項按鈕
# 定義幾個顏色的全域變數
COLOR1 = "Blue"
COLOR2 = "Gold"
COLOR3 = "chocolate1"
# 選項按鈕回呼函數,就是當選項按鈕被點擊會執行該函數
def radCall():
radSel = radVar.get()
if radSel == 1:
win.configure(background=COLOR1) # 設置整個介面的背景顏色
elif radSel == 2:
win.configure(background=COLOR2)
elif radSel == 3:
win.configure(background=COLOR3)
radVar = tk.IntVar() # 通過tk.IntVar() 獲取選項按鈕value參數對應的值
rad1 = tk.Radiobutton(win, text=COLOR1, variable=radVar, value=1, command=radCall) # 當該選項按鈕被點擊時,會觸發參數command對應的函數
rad1.grid(column=0, row=5, sticky=tk.W) # 參數sticky對應的值參考核取方塊的解釋
rad2 = tk.Radiobutton(win, text=COLOR2, variable=radVar, value=2, command=radCall)
rad2.grid(column=1, row=5, sticky=tk.W)
rad3 = tk.Radiobutton(win, text=COLOR3, variable=radVar, value=3, command=radCall)
rad3.grid(column=2, row=5, sticky=tk.W)
# 滾動文字方塊
scrolW = 30 # 設置文字方塊的長度
scrolH = 3 # 設置文字方塊的高度
scr = scrolledtext.ScrolledText(win, width=scrolW, height=scrolH, wrap=tk.WORD) # wrap=tk.WORD 這個值表示在行的末尾如果有一個單詞跨行,會將該單詞放到下一行顯示,比如輸入hello,he在第一行的行尾,llo在第二行的行首, 這時如果wrap=tk.WORD,則表示會將 hello 這個單詞挪到下一行行首顯示, wrap預設的值為tk.CHAR
scr.grid(column=0, columnspan=3) # columnspan 個人理解是將3列合併成一列 也可以通過 sticky=tk.W 來控制該文字方塊的對齊方式
win.mainloop() # 當調用mainloop()時, 視窗才會顯示出來
免責聲明:
1.本影像檔案皆從網上搜集轉載,不承擔任何技術及版權問題。
2.如有下載連結僅供寬頻測試研究用途,請下載後在24小時內刪除,請勿用於商業。
3.若侵犯了您的合法權益,請來信通知我們,我們會及時刪除,給您帶來的不便,深表歉意。
I used to be able to find good information from your blog posts.