網站首頁 編程語言 正文
Text的屬性wrap
from tkinter import * root = Tk() root.geometry('200x300') te = Text(root,height=20,width=15) #將多行輸入文本放入(pack)窗口中 te.pack() #持續運行程序 root.mainloop()
這個文本框的高度為20,寬度為15,單位為字符。可以看到當每行的內容不會超過15字符,不斷輸入會發現,當所輸入的內容超過20行,文本框會自動增加新行用于輸入新的內容。
也就是說,在沒有明確說明的情況下,在多行文本輸入時,內容是不受限制的,但是每行能輸入多少字符是有限制。
當然每行能輸入的內容也可以不受到限制,這就要說到wrap屬性。
wrap和Label和Button的wraplength屬性是有差別的。wraplength是為了完全顯示標簽或按鈕的文本內容,而采取多行顯示。而Text的內容能完全顯示,wrap取不同的值。顯示的方式不一樣。
wrap可以有三個值:NONE、WORD、CHAR。
#其它的部分和上面的一樣,只是加了個wrap屬性 te = Text(root,height=20,width=15,wrap=NONE)
高度和寬度還是20、15,只不過屬性wrap的值為NONE。這樣的話,在沒有手動換行的情況,每行可以不斷輸入內容。如果向文本框放入文件內容,比如text、word文件,多行文本框中每行內容和文件中的內容一致。
#wrap=CHAR te = Text(root,height=20,width=15,wrap=CHAR)
#wrap=WORD te = Text(root,height=20,width=15,wrap=WORD)
上面就是wrap值為WORD和CHAR的區別。可以看到值為WORD時,文本框會保證字符的完整性,而值為CHAR時不會。兩者,每行都會限制在15個字符,只不過換行時的方式不一樣。
當文本框的內容比較多時,可以借助滾動條來瀏覽內容。有垂直滾動條、水平滾動條。
設置垂直滾動條
想要的效果:當我們滑動垂直滾條時,文本內容也隨著上下變動。
import tkinter as tk root=tk.Tk() root.geometry('300x240') #f=tk.Frame(root) #創建滾動條對象,默認是垂直滾動條,orient=tk.VERTICAL s1 = tk.Scrollbar(root) #滾動條是要放在窗口上,其參數為窗口對象 #創建多行輸入文本對象 b1 = tk.Text(root,width=20,height=5, yscrollcommand=s1.set) #獲取文本文件中的內容 with open(r'C:\Users\Administrator\Desktop\杜甫.txt') as a: data = a.read() #將文本文件的內容放入文本框中 b1.insert(tk.END,data) s1.pack(side=tk.RIGHT,fill=tk.Y) s1.config(command=b1.yview) b1.pack() #f.pack() root.mainloop()
效果圖示
創建完垂直滾動條對象和多行輸入文本對象后,需要注意:
- 1.
yscrollcommand=s1.set
,這樣滑動文本框的內容,滾動條也會滑動 - 2.
s1.config(command=b1.yview)
,這樣滑動滾動條,文本框的內容也會滑動。 - 3.
s1.pack(side=tk.RIGHT,fill=tk.Y)
,這樣滾動條才能充滿y軸方向,而不只是一小部分。
設置水平滾動條
import tkinter as tk root=tk.Tk() root.geometry('300x240') #f=tk.Frame(root) s1 = tk.Scrollbar(root,orient=tk.HORIZONTAL) b1 = tk.Text(root,width=20,height=5,wrap=tk.NONE, xscrollcommand=s1.set,cursor='circle', selectbackground='yellow', selectforeground='blue') #text內容的初始化 with open(r'C:\Users\Administrator\Desktop\杜甫.txt') as a: data = a.read() #放進杜甫的《茅屋為秋風所破歌》 b1.insert(tk.END,data) b1.pack() #獲得文本中的內容 #print(b1.get(1.4,3.5),type(b1.get(1.4,3.5))) s1.pack(side=tk.BOTTOM,fill=tk.X) s1.config(command=b1.xview) #f.pack() root.mainloop()
效果圖示
設置水平滾動條會出現一個問題,就是滾動條不顯示。這是因為,在默認情況下,每行的字符數會有限制,這樣就用不上水平滾動條。如果要解除限制,或者說使放入的文本內容以其原有的方式換行,需要加入wrap=NONE。
獲得文本內容
我們知道Label、Button都有text屬性,和這兩者不同的是,Entry、Text不能用text屬性填入文本內容,Entry使用的是textvariable屬性,Text使用insert插入文本內容,Entry和Text的文本內容是動態的,可以輸入更改的。
Entry和Text均可輸入文本內容,只不過Text可以輸入多行。所以Entry沒有height屬性,而Text有。在Entry和Text輸入文本內容后,可以用get()獲得字符串形式的文本內容。
import tkinter as tk root=tk.Tk() root.geometry('300x240') #f=tk.Frame(root) s1 = tk.Scrollbar(root,orient=tk.HORIZONTAL) b1 = tk.Text(root,width=20,height=5,wrap=tk.NONE, xscrollcommand=s1.set,cursor='circle', selectbackground='yellow', selectforeground='blue') #text內容的初始化 with open(r'C:\Users\Administrator\Desktop\杜甫.txt') as a: data = a.read() #放進杜甫的《茅屋為秋風所破歌》 b1.insert(tk.END,data) b1.pack() #獲得文本中的內容 #print(b1.get(1.4,3.5),type(b1.get(1.4,3.5))) s1.pack(side=tk.BOTTOM,fill=tk.X) s1.config(command=b1.xview) #f.pack() #button的回調函數 def pri1(): print(b1.get(1.0, 5.0), type(b1.get(1.4, 3.5))) #由于文本內容可以隨時變化,button獲得最新的文本內容 button = tk.Button(root,text='button',command=pri1) button.pack() root.mainloop()
點擊Button按鈕,會獲得文本內容
我們這里截取的是一段。每點擊一次按鈕,獲取一次文本內容。所以創建Button按鈕可以獲取文本當前的內容。
原文鏈接:https://blog.csdn.net/weixin_44851971/article/details/108176795
相關推薦
- 2022-07-12 Python的私有屬性及@property
- 2023-11-13 matplotlib圖例(legend)如何自由設置其位置、大小以及樣式
- 2022-06-14 Flutter網絡請求Dio庫的使用及封裝詳解_Android
- 2023-02-15 Go語言中節省內存技巧方法示例_Golang
- 2022-09-16 Python?docx庫刪除復制paragraph及行高設置圖片插入示例_python
- 2022-03-19 Go?語言的?:=的具體使用_Golang
- 2022-08-23 python畫圖中文不顯示問題的解決方法_python
- 2022-06-22 利用Docker?運行?python?簡單程序_docker
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支