国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

《零基礎(chǔ)入門(mén)學(xué)習(xí)Python》第070講:GUI的終極選擇:Tkinter7

這篇具有很好參考價(jià)值的文章主要介紹了《零基礎(chǔ)入門(mén)學(xué)習(xí)Python》第070講:GUI的終極選擇:Tkinter7。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

上節(jié)課我們介紹了Text組件的Indexs 索引和 Marks 標(biāo)記,它們主要是用于定位,Marks 可以看做是特殊的 Indexs,但是它們又不是完全相同的,比如在默認(rèn)情況下,你在Marks指定的位置中插入數(shù)據(jù),Marks 的位置會(huì)自動(dòng)發(fā)生改變, 因?yàn)镸arks 認(rèn)它后面的“那個(gè)家伙”,當(dāng) Marks 前面的數(shù)據(jù)被刪除時(shí),Marks 并不會(huì)被刪除,它的位置只是相應(yīng)的向前移動(dòng)了,只有?mark_unset() 方法 才能夠刪除Marks,這節(jié)課我們接著來(lái)介紹 Tags 的用法。

Tags(標(biāo)簽)通常用于改變 Text 組件中內(nèi)容的樣式和功能。你可以修改文本的字體、尺寸和顏色。另外,Tags 還允許你將文本、嵌入的組件和圖片與鍵盤(pán)和鼠標(biāo)等事件相關(guān)聯(lián)。除了 user-defined tags(用戶(hù)自定義的 Tags),還有一個(gè)預(yù)定義的特殊 Tag:SEL。

SEL(或 "sel")用于表示對(duì)應(yīng)的選中內(nèi)容(如果有的話(huà))。

你可以自定義任意數(shù)量的 Tags,Tags 的名字是由普通字符串組成,可以是除了空白字符外的任何字符。另外,任何文本內(nèi)容都支持多個(gè) Tags 描述,任何 Tag 也可以用于描述多個(gè)不同的文本內(nèi)容。

我們來(lái)舉個(gè)例子:

 
  1. import tkinter as tk

  2. root = tk.Tk()

  3. text = tk.Text(root, width=40, height=5,)

  4. text.pack()

  5. text.insert("insert", 'I love Python.com')

  6. text.tag_add("tag1", "1.7", "1.13", "1.15")

  7. text.tag_config("tag1", background = "yellow", foreground = "red")

  8. root.mainloop()文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-615249.html

《零基礎(chǔ)入門(mén)學(xué)習(xí)Python》第070講:GUI的終極選擇:Tkinter7,python

還有一點(diǎn)需要注意的是:如果你對(duì)同一個(gè)范圍內(nèi)的文本加上多個(gè) Tags,并且設(shè)置相同的選項(xiàng),那么新創(chuàng)建的 Tag 樣式會(huì)覆蓋比較舊的 Tag:

 
  1. import tkinter as tk

  2. root = tk.Tk()

  3. text = tk.Text(root, width=40, height=5)

  4. text.pack()

  5. text.insert("insert", 'I love Python.com')

  6. text.tag_add("tag1", "1.7", "1.13", "1.15")

  7. text.tag_add("tag2", "1.7", "1.13", "1.15")

  8. text.tag_config("tag2", foreground = "green")

  9. text.tag_config("tag1", background = "yellow", foreground = "red")

  10. root.mainloop()

《零基礎(chǔ)入門(mén)學(xué)習(xí)Python》第070講:GUI的終極選擇:Tkinter7,python

那么新創(chuàng)建的 Tag2 會(huì)覆蓋比較舊的 Tag1 的相同選項(xiàng),?注意,與下邊的調(diào)用順序沒(méi)有關(guān)系

你或許想控制 Tags 間的優(yōu)先級(jí),這可以實(shí)現(xiàn)嗎?完全沒(méi)有問(wèn)題!你可以使用 tag_raise() 和 tag_lower() 方法來(lái)提高和降低某個(gè) Tag 的優(yōu)先級(jí)。

 
  1. import tkinter as tk

  2. root = tk.Tk()

  3. text = tk.Text(root, width=40, height=5)

  4. text.pack()

  5. text.tag_config("tag1", background="yellow", foreground="red")

  6. text.tag_config("tag2", foreground="green")

  7. text.tag_lower("tag2")

  8. text.insert("insert", "I love Python!", ("tag2", "tag1"))

  9. root.mainloop()

《零基礎(chǔ)入門(mén)學(xué)習(xí)Python》第070講:GUI的終極選擇:Tkinter7,python

另外 Tags 還支持事件綁定,使用的是 tag_bind() 的方法。

下邊例子中我們將文本("Python.com")與鼠標(biāo)事件進(jìn)行綁定,當(dāng)鼠標(biāo)進(jìn)入該文本段的時(shí)候,鼠標(biāo)樣式切換為 "arrow" 形態(tài),離開(kāi)文本段的時(shí)候切換回 "xterm" 形態(tài)。當(dāng)觸發(fā)鼠標(biāo)“左鍵點(diǎn)擊操作”事件的時(shí)候,使用默認(rèn)瀏覽器打開(kāi)Python的首頁(yè)(Welcome to Python.org):

 
  1. import tkinter as tk

  2. import webbrowser

  3. root = tk.Tk()

  4. text = tk.Text(root, width=40, height=5)

  5. text.pack()

  6. text.insert("insert", "I love Python.com!")

  7. text.tag_add("link", "1.7", "1.17")

  8. text.tag_config("link", foreground = "blue", underline = True)

  9. def show_arrow_cursor(event):

  10. text.config(cursor = "arrow")

  11. def show_xterm_cursor(event):

  12. text.config(cursor = "xterm")

  13. def click(event):

  14. webbrowser.open("https://www.python.org/")

  15. text.tag_bind("link", "<Enter>", show_arrow_cursor)

  16. text.tag_bind("link", "<Leave>", show_xterm_cursor)

  17. text.tag_bind("link", "<Button-1>", click)

  18. root.mainloop()

接下來(lái)給大家介紹幾個(gè) Tags 使用上的技巧:

(一)判斷內(nèi)容是否發(fā)生變化

通過(guò)校檢 Text 組件中文本的 MD5 摘要來(lái)判斷內(nèi)容是否發(fā)生改變

 
  1. import tkinter as tk

  2. import hashlib

  3. root = tk.Tk()

  4. text = tk.Text(root, width=40, height=5)

  5. text.pack()

  6. text.insert("insert", "I love Python.com!")

  7. contents = text.get("1.0", "end")

  8. def getSig(contents):

  9. m = hashlib.md5(contents.encode())

  10. return m.digest()

  11. sig = getSig(contents)

  12. def check():

  13. contents = text.get("1.0", "end")

  14. if sig != getSig(contents):

  15. print("警報(bào):內(nèi)容發(fā)生改變!")

  16. else:

  17. print("風(fēng)平浪靜")

  18. tk.Button(root, text = "檢查", command = check).pack()

  19. root.mainloop()

(二)查找操作

使用 search() 方法可以搜索 Text 組件中的內(nèi)容。但是傳統(tǒng)的 search() 方法只查找到一個(gè),就返回,我們可以加入一個(gè)循環(huán),查找所有的。

 
  1. import tkinter as tk

  2. import hashlib

  3. root = tk.Tk()

  4. text = tk.Text(root, width=40, height=5)

  5. text.pack()

  6. text.insert("insert", "I love Python.com!")

  7. def getIndex(text, index):

  8. return tuple(map(int, str.split(text.index(index), ".")))

  9. start = "1.0"

  10. while True:

  11. pos = text.search("o", start, stopindex = "end")

  12. if not pos:

  13. break

  14. print("找到啦,位置是:", getIndex(text, pos))

  15. start = pos + "+1c"

  16. root.mainloop()

(三)恢復(fù)、撤銷(xiāo)操作

Text 組件還支持“恢復(fù)”和“撤銷(xiāo)”操作,這使得 Text 組件顯得相當(dāng)高大上。

通過(guò)設(shè)置 undo 選項(xiàng)為 True 可以開(kāi)啟 Text 組件的“撤銷(xiāo)”功能。然后用 edit_undo() 方法實(shí)現(xiàn)“撤銷(xiāo)”操作,用 edit_redo() 方法實(shí)現(xiàn)“恢復(fù)”操作。

 
  1. import tkinter as tk

  2. import hashlib

  3. root = tk.Tk()

  4. text = tk.Text(root, width=40, height=5, undo = True)

  5. text.pack()

  6. text.insert("insert", "I love Python.com!")

  7. def show():

  8. text.edit_undo()

  9. tk.Button(root, text = "撤銷(xiāo)", command = show).pack()

  10. root.mainloop()

?Text 組件內(nèi)部有一個(gè)棧專(zhuān)門(mén)用于記錄內(nèi)容的每次變動(dòng),所以每次“撤銷(xiāo)”操作就是一次彈棧操作,“恢復(fù)”就是再次壓棧。

默認(rèn)情況下,每一次完整的操作將會(huì)放入棧中。但怎么樣算是一次完整的操作呢?Tkinter 覺(jué)得每次焦點(diǎn)切換、用戶(hù)按下 Enter 鍵、刪除\插入操作的轉(zhuǎn)換等之前的操作算是一次完整的操作。也就是說(shuō)你連續(xù)輸入“I love Python” 的話(huà),一次的“撤銷(xiāo)”操作就會(huì)將所有的內(nèi)容刪除。

那我們能不能自定義呢?比如我希望插入一個(gè)字符就算一次完整的操作,然后每次點(diǎn)擊“撤銷(xiāo)”就去掉一個(gè)字符。

當(dāng)然可以!做法就是先將 autoseparators 選項(xiàng)設(shè)置為 False(因?yàn)檫@個(gè)選項(xiàng)是讓 Tkinter 在認(rèn)為一次完整的操作結(jié)束后自動(dòng)插入“分隔符”),然后綁定鍵盤(pán)事件,每次有輸入就用 edit_separator() 方法人為地插入一個(gè)“分隔符”:

 
  1. import tkinter as tk

  2. import hashlib

  3. root = tk.Tk()

  4. text = tk.Text(root, width=40, height=5, undo = True, autoseparators = False)

  5. text.pack()

  6. text.insert("insert", "I love Python.com!")

  7. def callback(event):

  8. text.edit_separator() #人為插入分隔符

  9. text.bind('<Key>', callback)

  10. def show():

  11. text.edit_undo()

  12. tk.Button(root, text = "撤銷(xiāo)", command = show).pack()

  13. root.mainloop()

到了這里,關(guān)于《零基礎(chǔ)入門(mén)學(xué)習(xí)Python》第070講:GUI的終極選擇:Tkinter7的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Python創(chuàng)建一個(gè)GUI(PyQt5)選擇文件的界面獲取文件路徑
  • 30天入門(mén)Python(基礎(chǔ)篇)——第2天:Python安裝(保姆級(jí))與IDE的認(rèn)識(shí)與選擇+詳細(xì)安裝教程(萬(wàn)字建議收藏)

    30天入門(mén)Python(基礎(chǔ)篇)——第2天:Python安裝(保姆級(jí))與IDE的認(rèn)識(shí)與選擇+詳細(xì)安裝教程(萬(wàn)字建議收藏)

    ????本文已收錄于《30天學(xué)習(xí)Python從入門(mén)到精通》 ????本專(zhuān)欄專(zhuān)門(mén) 針對(duì)于零基礎(chǔ)和需要重新復(fù)習(xí)鞏固的同學(xué) 所準(zhǔn)備的一套基礎(chǔ)班教學(xué), 從0基礎(chǔ)到精通Python ,輕松掌握Python,歡迎各位同學(xué)訂閱,專(zhuān)欄訂閱地址:點(diǎn)我直達(dá) ????此外如果您已工作,如需利用Python解決辦公中

    2024年02月07日
    瀏覽(35)
  • MATLAB App Designer基礎(chǔ)教程 Matlab GUI入門(mén)(四)

    MATLAB App Designer基礎(chǔ)教程 Matlab GUI入門(mén)(四)

    繪制函數(shù)圖像 顯示圖像(jpg png tiff) App designer中 plot 和命令行中的 plot函數(shù)的不同; 如何在坐標(biāo)軸空間中顯示兩個(gè)函數(shù)圖像; 智能縮進(jìn) (Ctrl + I) 顏色選項(xiàng): r -紅色 g - 綠色 b - 藍(lán)色 w - 白色 k - 黑色 去除邊框技巧(隱藏邊框技巧),界面設(shè)置(代碼設(shè)置)框樣式 更改網(wǎng)格

    2024年02月12日
    瀏覽(20)
  • 【python零基礎(chǔ)入門(mén)學(xué)習(xí)】python基礎(chǔ)篇(一)

    【python零基礎(chǔ)入門(mén)學(xué)習(xí)】python基礎(chǔ)篇(一)

    官方: www.python.org,自行安裝,linux上有自帶python,win自行安裝。 [student@room9pc01 05]$ python --version Python 2.7.5 ?#創(chuàng)建虛擬環(huán)境: [root@room9pc01 bin]# pwd /root/nsd1907/bin [root@room9pc01 bin]# ls activate? activate.csh? activate.fish? easy_install? easy_install-3.6? pip? pip3? pip3.6? python? python3 [root@room9p

    2024年02月11日
    瀏覽(19)
  • 【零基礎(chǔ)入門(mén)學(xué)習(xí)Python---Python中Web開(kāi)發(fā)基礎(chǔ)之快速入門(mén)實(shí)踐】

    【零基礎(chǔ)入門(mén)學(xué)習(xí)Python---Python中Web開(kāi)發(fā)基礎(chǔ)之快速入門(mén)實(shí)踐】

    ?? 零基礎(chǔ)入門(mén)學(xué)習(xí)Python?? ?? 算法刷題專(zhuān)欄 | 面試必備算法 | 面試高頻算法 ?? ?? 越難的東西,越要努力堅(jiān)持,因?yàn)樗哂泻芨叩膬r(jià)值,算法就是這樣? ?? 作者簡(jiǎn)介:碩風(fēng)和煒,CSDN-Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者??,保研|國(guó)家獎(jiǎng)學(xué)金|高中學(xué)習(xí)JAVA|大學(xué)完善JAVA開(kāi)發(fā)技術(shù)棧|面試刷題

    2024年02月12日
    瀏覽(47)
  • 【Python學(xué)習(xí)篇】Python基礎(chǔ)入門(mén)學(xué)習(xí)——你好Python(一)

    【Python學(xué)習(xí)篇】Python基礎(chǔ)入門(mén)學(xué)習(xí)——你好Python(一)

    ?個(gè)人名片: ??作者簡(jiǎn)介:學(xué)生 ??個(gè)人主頁(yè):妄北y ??個(gè)人QQ:2061314755 ??個(gè)人郵箱:2061314755@qq.com ??個(gè)人WeChat:Vir2021GKBS ?? 本文由妄北y原創(chuàng),首發(fā)CSDN ?????? ??座右銘:大多數(shù)人想要改造這個(gè)世界,但卻罕有人想改造自己。 專(zhuān)欄導(dǎo)航: 妄北y系列專(zhuān)欄導(dǎo)航: ? C/C++的

    2024年03月09日
    瀏覽(23)
  • Python入門(mén)篇(八)---GUI編程

    Python入門(mén)篇(八)---GUI編程

    目錄 GUI編程的概念和應(yīng)用領(lǐng)域 GUI編程概念 GUI編程應(yīng)用領(lǐng)域 Tkinter庫(kù)的使用 創(chuàng)建一個(gè)GUI應(yīng)用程序 控件 標(biāo)簽控件 按鈕控件 文本框控件 按鈕控件(Button) PyQt庫(kù)的使用 安裝PyQt庫(kù) 創(chuàng)建一個(gè)PyQt窗口 添加標(biāo)簽和按鈕 ?Python中常用的GUI編程工具有多種,比如Tkinter、wxPython、PyQt等等。

    2024年02月08日
    瀏覽(18)
  • 手機(jī)Python爬蟲(chóng)教程:利用手機(jī)學(xué)習(xí)Python爬蟲(chóng)的終極指南

    在數(shù)字化時(shí)代,手機(jī)已經(jīng)成為人們生活中不可或缺的一部分。而Python爬蟲(chóng)作為一種強(qiáng)大的數(shù)據(jù)獲取工具,也受到越來(lái)越多人的關(guān)注。但是,是否可以利用手機(jī)進(jìn)行Python爬蟲(chóng)學(xué)習(xí)呢?本文將介紹如何通過(guò)手機(jī)學(xué)習(xí)Python爬蟲(chóng),為你打開(kāi)一扇全新的學(xué)習(xí)之門(mén)。 1. 《Python爬蟲(chóng)入門(mén)教程

    2024年02月07日
    瀏覽(19)
  • 【零基礎(chǔ)入門(mén)學(xué)習(xí)Python---Python函數(shù)和模塊】

    【零基礎(chǔ)入門(mén)學(xué)習(xí)Python---Python函數(shù)和模塊】

    ?? Python ?? ?? 算法刷題專(zhuān)欄 | 面試必備算法 | 面試高頻算法 ?? ?? 越難的東西,越要努力堅(jiān)持,因?yàn)樗哂泻芨叩膬r(jià)值,算法就是這樣? ?? 作者簡(jiǎn)介:碩風(fēng)和煒,CSDN-Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者??,保研|國(guó)家獎(jiǎng)學(xué)金|高中學(xué)習(xí)JAVA|大學(xué)完善JAVA開(kāi)發(fā)技術(shù)棧|面試刷題|面經(jīng)八股文|經(jīng)驗(yàn)

    2024年02月11日
    瀏覽(17)
  • 【零基礎(chǔ)入門(mén)學(xué)習(xí)Python---Python網(wǎng)絡(luò)編程之django快速入門(mén)實(shí)踐】

    【零基礎(chǔ)入門(mén)學(xué)習(xí)Python---Python網(wǎng)絡(luò)編程之django快速入門(mén)實(shí)踐】

    ?? Python ?? ?? 算法刷題專(zhuān)欄 | 面試必備算法 | 面試高頻算法 ?? ?? 越難的東西,越要努力堅(jiān)持,因?yàn)樗哂泻芨叩膬r(jià)值,算法就是這樣? ?? 作者簡(jiǎn)介:碩風(fēng)和煒,CSDN-Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者??,保研|國(guó)家獎(jiǎng)學(xué)金|高中學(xué)習(xí)JAVA|大學(xué)完善JAVA開(kāi)發(fā)技術(shù)棧|面試刷題|面經(jīng)八股文|經(jīng)驗(yàn)

    2024年02月16日
    瀏覽(53)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包