摘要:已獲原作者授權(quán)原系列地址簡介及簡例控件用來顯示多行文本的控件很強(qiáng)大很靈活可以實(shí)現(xiàn)很多功能雖然這個(gè)控件的主要用途是顯示多行文本但其還可以被用作簡單的文本編輯器甚至是網(wǎng)頁瀏覽器控件可以顯示網(wǎng)頁鏈接圖片頁面甚至樣式表在其他的各種教程中很難找到一個(gè)
已獲原作者授權(quán). 原系列地址: Python Tkinter簡介及簡例
Text 控件用來顯示多行文本. Tkinter 的 Text 控件很強(qiáng)大, 很靈活, 可以實(shí)現(xiàn)很多功能. 雖然這個(gè)控件的主要用途是顯示多行文本, 但其還可以被用作簡單的文本編輯器, 甚至是網(wǎng)頁瀏覽器.
Text 控件可以顯示網(wǎng)頁鏈接, 圖片, HTML頁面, 甚至 CSS 樣式表.
在其他的各種教程中, 很難找到一個(gè)關(guān)于 Text 控件的簡單例子. 這也是我們寫這一章教程的主要目的:
我們使用構(gòu)造方法創(chuàng)建了一個(gè) Text 控件, 設(shè)置其高度為 2 (不是像素高度, 而是兩行字符的高度), 設(shè)置其寬度為 30 (不是像素寬度, 是30個(gè)字符的寬度), 然后使用 insert() 方法插入兩行文本.
from Tkinter import * root = Tk() T = Text(root, height=2, width=30) T.pack() T.insert(END, "Just a text Widget in two lines ") mainloop()
運(yùn)行后窗口的樣子很可愛:
讓我們對(duì)上面的例子做一點(diǎn)小小的改動(dòng). 我們加入了另一段文字, 哈姆雷特那段著名的開場白:
from Tkinter import * root = Tk() T = Text(root, height=2, width=30) T.pack() quote = """HAMLET: To be, or not to be--that is the question: Whether "tis nobler in the mind to suffer The slings and arrows of outrageous fortune Or to take arms against a sea of troubles And by opposing end them. To die, to sleep-- No more--and by a sleep to say we end The heartache, and the thousand natural shocks That flesh is heir to. "Tis a consummation Devoutly to be wished.""" T.insert(END, quote) mainloop()
運(yùn)行上面的例子后, 產(chǎn)生的窗口并不好看. 在窗口中我們只能看到這段獨(dú)白的第一行, 并且還被斷為兩行. 窗口只顯示兩行文字, 是因?yàn)槲覀儗?Text 控件高度設(shè)置為 2 行文字. 文本自動(dòng)斷行, 是因?yàn)槲覀儗?Text 控件寬度設(shè)置為 30 個(gè)字符.
這個(gè)問題的一個(gè)解決辦法是, 將 Text 控件的高度設(shè)置為這段文本的行數(shù), 將 Text 控件的寬度設(shè)置為這段文本中最長的那行的字符數(shù).
但更好的解決辦法是設(shè)置滾動(dòng), 就像我們常用的瀏覽器等應(yīng)用中那樣.
現(xiàn)在讓我們來為我們的應(yīng)用加入一個(gè)滾動(dòng)條. Tkinter 提供了 Scrollbar() 方法來實(shí)現(xiàn)這一目的, 其所接受的唯一參數(shù)為當(dāng)前窗口應(yīng)用的 Tkinter root 對(duì)象.
from Tkinter import * root = Tk() S = Scrollbar(root) T = Text(root, height=4, width=50) S.pack(side=RIGHT, fill=Y) T.pack(side=LEFT, fill=Y) S.config(command=T.yview) T.config(yscrollcommand=S.set) quote = """HAMLET: To be, or not to be--that is the question: Whether "tis nobler in the mind to suffer The slings and arrows of outrageous fortune Or to take arms against a sea of troubles And by opposing end them. To die, to sleep-- No more--and by a sleep to say we end The heartache, and the thousand natural shocks That flesh is heir to. "Tis a consummation Devoutly to be wished.""" T.insert(END, quote) mainloop( )
現(xiàn)在這個(gè)窗口看起來順眼多了, 視口中總是顯示4行文字, 但所有行都可以通過拖動(dòng)滾動(dòng)條看到:
下面的例子中, 我們?cè)谝粋€(gè) Text 控件中顯示了一張圖片, 并為另一個(gè)單行的 Text 控件綁定了一個(gè)點(diǎn)擊事件:
from Tkinter import * root = Tk() text1 = Text(root, height=20, width=30) photo=PhotoImage(file="./William_Shakespeare.gif") text1.insert(END," ") text1.image_create(END, image=photo) text1.pack(side=LEFT) text2 = Text(root, height=20, width=50) scroll = Scrollbar(root, command=text2.yview) text2.configure(yscrollcommand=scroll.set) text2.tag_configure("bold_italics", font=("Arial", 12, "bold", "italic")) text2.tag_configure("big", font=("Verdana", 20, "bold")) text2.tag_configure("color", foreground="#476042", font=("Tempus Sans ITC", 12, "bold")) text2.tag_bind("follow", "<1>", lambda e, t=text2: t.insert(END, "Not now, maybe later!")) text2.insert(END," William Shakespeare ", "big") quote = """ To be, or not to be that is the question: Whether "tis Nobler in the mind to suffer The Slings and Arrows of outrageous Fortune, Or to take Arms against a Sea of troubles, """ text2.insert(END, quote, "color") text2.insert(END, "follow-up ", "follow") text2.pack(side=LEFT) scroll.pack(side=RIGHT, fill=Y) root.mainloop()
全系列:
[譯][Tkinter 教程01] 入門: Label 控件
[譯][Tkinter 教程02] Message 控件
[譯][Tkinter 教程03] Button 控件
[譯][Tkinter 教程04] Variable 類
[譯][Tinkter 教程05] Radiobutton 控件
[譯][Tkinter 教程06] Checkbox 控件
[譯][Tkinter 教程07] Entry 控件
[譯][Tkinter 教程08] Canvas 圖形繪制
[譯][Tkinter 教程09] Scale 控件
[譯][Tkinter 教程10] Text 控件
[譯][Tkinter 教程11] 對(duì)話框和消息框
[譯][Tkinter 教程12] 布局管理 (Pack Place Grid)
[譯][Tkinter 教程13] Mastermind 游戲
[譯][Tkinter 教程14] menu 菜單
[譯][Tkinter 教程15] event 事件綁定
譯者水平有限, 如有疏漏, 歡迎指正.
已獲得原作者授權(quán). 原文地址: Text Widget.
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/41508.html
摘要:已獲原作者授權(quán)原系列地址下面我們將以中最簡單的控件控件開始這個(gè)系列的教程在中控件用以顯示文字和圖片通常被用來展示信息而非與用戶交互譯者注也可以綁定點(diǎn)擊等事件只是通常不這么用程序員的教程怎么能少了我們尊重這個(gè)傳統(tǒng)但我們不說讓我們來秀出吧下面的 已獲原作者授權(quán). 原系列地址: Python Tkinter Hello Tkinter Label 下面我們將以 Tkinter 中最簡單的控...
摘要:已獲原作者授權(quán)原系列地址簡介本文講述如何使用的布局管理被稱作或有三種布局管理方式注意這三種布局管理在同一個(gè)里一定不可以混用布局管理有以下功能將控件放置在屏幕上包括控件的位置及控件的大小將控件注冊(cè)到本地窗口系統(tǒng)中管理控件在屏幕上的顯示雖然控件 已獲原作者授權(quán). 原系列地址: Python Tkinter 簡介: 本文講述如何使用 tkinter 的布局管理 (被稱作 layout ma...
摘要:已獲原作者授權(quán)原系列地址簡介中的控件是一種可供用戶通過拖動(dòng)指示器改變變量值的控件這種控件可以水平放置也可以豎直放置可以在用戶界面中放置一個(gè)控件用戶通過拖動(dòng)該控件就可以在某個(gè)取值范圍內(nèi)選擇一個(gè)合適的值控件可以設(shè)置最大最小值以確定取值范圍我們也 已獲原作者授權(quán). 原系列地址: Python Tkinter 簡介 Tkinter 中的 Scale 控件是一種可供用戶通過拖動(dòng)指示器改變變量值...
摘要:已獲原作者授權(quán)原系列地址簡介控件是一種標(biāo)準(zhǔn)控件用來展現(xiàn)不同樣式的按鈕控件被用以和用戶交互比如按鈕被鼠標(biāo)點(diǎn)擊后某種操作被啟動(dòng)和控件類似按鈕可以展示圖片或者文字不同的是控件可以指定字體控件只能使用單一的字體上的文字可以多行顯示可以將一個(gè)函數(shù)或方 已獲原作者授權(quán). 原系列地址: Python Tkinter 簡介 Button 控件是一種標(biāo)準(zhǔn) Tkinter 控件, 用來展現(xiàn)不同樣式的按鈕...
摘要:已獲原作者授權(quán)原系列地址簡介是用來接收字符串等輸入的控件該控件允許用戶輸入一行文字如果用戶輸入的文字長度長于控件的寬度時(shí)文字會(huì)向后滾動(dòng)這種情況下所輸入的字符串無法全部顯示點(diǎn)擊箭頭符號(hào)可以將不可見的文字部分移入可見區(qū)域如果你想要輸入多行文本就 已獲原作者授權(quán). 原系列地址: Python Tkinter 簡介 Entry 是 Tkinter 用來接收字符串等輸入的控件. 該控件允許用戶...
閱讀 3233·2021-11-11 16:55
閱讀 2497·2021-10-13 09:39
閱讀 2427·2021-09-13 10:27
閱讀 2163·2019-08-30 15:55
閱讀 3092·2019-08-30 15:54
閱讀 3137·2019-08-29 16:34
閱讀 1829·2019-08-29 12:41
閱讀 1073·2019-08-29 11:33