iT邦幫忙

2021 iThome 鐵人賽

DAY 24
2
自我挑戰組

一起用python寫UI系列 第 24

Day24 用python寫UI-聊聊Text(一)

今天放假好開心,睡超飽的ヾ(^▽^))), 但是還是要起床發文啦~
Text顧名思義就是可以輸入文字,鍵一個框框,就可以把文字輸入到裡面了。

♠♣今天的文章大綱♥♦

  • Text基本參數
  • Text與卷軸設計
  • 字形設定

Text基本參數

語法:Text(master,options...)

參數 內容
bg或background 背景色彩。
borderwidth 或bd 邊界寬度預設是2個像素。
cursor 當滑鼠游標在核取方塊時的游標外形。
exportselection 如果執行選取時所選取的字串會自動輸出至剪貼簿,如果想要避免如此可以設定 exportselection=0。
fg或 foreground 字型色彩。
font 字型。
height 高,單位是字元高,實際高度會視字元數量而定。
highlightbackground 當文字方塊取得焦點時的背景顏色。
highlightcolor 當文字方塊取得焦點時的顏色。
highlightthickness 預設是1,取得焦點時的厚度。
insertbackground 預設是黑色,插入游標的顏色。
insertborderwidth 預設是0,圍繞插入游標的 3-D 厚度。
padx Text 左右框與文字最左最右的間距。
pady Text 上下框與文字最上最下的間距。
relief 預設是relief=SUNKEN可由此控制文字外框。
selectbackground 被選取字串的背景色彩。
selectborderwidth 選取字串時的邊界厚度,預設是1。
selectforeground 被選取字串的前景色彩。
state 輸入狀態,預設是 NORMAL ,DISABLED 則是無法編輯。
tab 可設定按Tab 鍵時,如何定位插入點。
width Text 的寬,單位是字元費。
wrap 預設是wrap=CHAR,當某行太長時可從字元斷行。當 wrap=WORD 時只能從字作斷行。
xerollcommand 在x軸使用捲軸。
ycrollcommand 在y軸使用捲軸。

簡單的先建立一個Text

import tkinter as tk

root = tk.Tk()
root.title('cuteluluWindow')
root.configure(bg="#7AFEC6")
root.iconbitmap('heart_green.ico')
root.geometry('300x100')

text=tk.Text(root,height=5,width=30)
text.pack()

root.mainloop()

執行結果⬇⬇⬇
會先是一個空白的框框,可以輸入自己想打的文字。
https://ithelp.ithome.com.tw/upload/images/20211009/20140047PSR8TP0zVE.png


Text與卷軸設計

用insert插入文字,這邊用最近很喜歡的歌詞XDD,有人知道是什麼歌嗎?

import tkinter as tk

root = tk.Tk()
root.title('cuteluluWindow')
root.configure(bg="#7AFEC6")
root.iconbitmap('heart_green.ico')
root.geometry('300x300')

ysc=tk.Scrollbar(root)
text=tk.Text(root,height=20,width=30)
ysc.pack(side='right',fill='y')
text.pack()
ysc.config(command=text.yview)
text.config(yscrollcommand=ysc.set)

ins="""散步紐約街頭
快要吻的時候
閃耀妳唇上的溫柔
怎麼忽然變成電鑽鑽頭
一樓四樓七樓 Stereo大合奏
成年以來一直睡不夠
幹嘛休假樓上總有人裝修
一覺~睡到自然醒過來
不管這個胡鬧時代到底有多壞
只想在潛意識第六層內
沒有心情不出來
說來~這個事情也奇怪
只要三步之內有妳在
我拳頭就放開 睡得像小孩
有人按錯門鈴
有人打錯電話
有人製造喧嘩的八卦
麻煩大家讓我靜一下好嗎
一覺~睡到自然醒過來
不管這個胡鬧時代到底有多壞
只想在潛意識第六層內
沒有心情不出來
說來~這個事情也奇怪
只要三步之內有妳在
我拳頭就放開 睡得像小孩
一覺~睡到自然醒過來
不管這個胡鬧時代到底有多壞
世界變得再快是非成敗
一旦抱妳入懷 置身事外
一覺~睡到自然醒過來
不管這個胡鬧時代到底有多壞
只想在潛意識第六層內
沒有心情不出來
說來~這個事情也奇怪
只要三步之內有妳在
防護罩就張開 睡得像小孩
睡得像小孩
睡得像小孩
最近睡得很壞... 最好妳搬過來"""
text.insert('end',ins)

root.mainloop()

執行結果⬇⬇⬇
https://ithelp.ithome.com.tw/upload/images/20211009/201400473Yt25Tfnkp.png


字形設定

可以在打完自之後更改想要的字體還有大小等等。

import tkinter as tk
import tkinter.ttk as ttk
import tkinter.font as font

root = tk.Tk()
root.title('cuteluluWindow')
root.configure(bg="#7AFEC6")
root.iconbitmap('heart_green.ico')
root.geometry('300x100')

def family(event):
    f=font.Font (family=familyVar.get())
    text.configure(font=f)

def weight(event):
    f=font.Font (weight=weightVar.get())
    text.configure(font=f)

def size(event):
    f=font.Font (size=sizeVar.get())
    text.configure(font=f)

toolbar=tk.Frame (root, relief='raised', borderwidth=1)
toolbar.pack(side='top', fill='x', padx=2, pady=1)

familyVar = tk.StringVar()
familyFamily=("Arial", "Times", "Courier")
familyVar.set (familyFamily [0]) 
family=tk.OptionMenu(toolbar, familyVar, *familyFamily, command=family)
family.pack(side='left', pady=2)

weightVar=tk.StringVar()
weightFamily = ("normal","bold")
weightVar.set(weightFamily [0]) 
weight = tk.OptionMenu(toolbar,weightVar, *weightFamily, command=weight)
weight.pack(pady=3,side='left')

sizeVar=tk.IntVar()
size=ttk.Combobox (toolbar, textvariable=sizeVar)
sizeFamily = [x for x in range (8,30)]

size["value"]= sizeFamily
size.current (4)
size.bind("<<ComboboxSelected >>", size)
size.pack(side='left')

text=tk.Text (root)
text.pack(fill='both', expand=True, padx=3, pady=2)
text.focus_set()
root.mainloop()

執行結果⬇⬇⬇
https://ithelp.ithome.com.tw/upload/images/20211009/20140047Xdd2qwPvRx.png


這邊就是今天的文章啦,Text感覺跟Entry很像,但就是空間會比較大,可以打更多字。
/images/emoticon/emoticon58.gif


上一篇
Day23 用python寫UI-聊聊Menu
下一篇
Day25 用python寫UI-聊聊Text(二)
系列文
一起用python寫UI30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
leo82721
iT邦新手 5 級 ‧ 2023-01-12 17:17:38

您好
想請教您如何get某一行的資料
get(第二行開頭, '第二行\n的前一字元')

我要留言

立即登入留言