此篇文章主要是詳細介紹了pythonGUI多列輸入文本Text的控制方式,具有非常好的實用價值,希望能幫助到大家。如有誤或者未考慮到真正的地區,望鼎力相助
Text的屬性wrap
fromtkinterimport* 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:UsersAdministratorDesktop杜甫.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:UsersAdministratorDesktop杜甫.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:UsersAdministratorDesktop杜甫.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按鈕,會獲得文本內容
綜上所述,這篇內容就給大家介紹到這里了,希望可以給大家帶來幫助。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129040.html
文章主要是詳細介紹了pythonGUI多做輸入文本Text的控制方式,具有非常好的實用價值,希望能幫助到大家。如有誤或者未考慮到真正的地區,望鼎力相助 Text的屬性wrap fromtkinterimport* root=Tk() root.geometry('200x300') te=Text(root,height=20,width=15) #將多做輸...
摘要:圖標解決了,程序代碼編寫好了,接下來就是最最重要的軟件打包環節了。在此,我們用打包,這是一個用于打包軟件的第三方庫。 新建一個data.txt文件。存用戶名和密碼 #!/usr/bin/env python# -*- coding: utf-8 -*-# @Author : Benjam...
CSS-Layout 旨在打造詳盡的前端布局代碼學習庫(自從用了框架開發,CSS生疏了不少,所以開這個庫練練手)SF不能正確解析含有中文的網址,所以某些預覽鏈接無法跳轉,請訪問我的博客閱讀此文 常見定位方法 水平居中 子元素為行內元素還是塊狀元素,寬度一定還是寬度未定,采取的布局方案不同。 方案選擇基本思路:子元素為 行內元素:對父元素設置text-align:center; 定寬塊狀元素: 設...
閱讀 911·2023-01-14 11:38
閱讀 878·2023-01-14 11:04
閱讀 740·2023-01-14 10:48
閱讀 1982·2023-01-14 10:34
閱讀 942·2023-01-14 10:24
閱讀 819·2023-01-14 10:18
閱讀 499·2023-01-14 10:09
閱讀 572·2023-01-14 10:02