五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Python通過(guò)tkinter列出全部字體名稱,及import模塊的一些知識(shí)

2020-09-07 19:09 作者:象喻  | 我要投稿

  用Python列出windows系統(tǒng)全部字體,通過(guò) tkinter.font 的 families() 函數(shù)實(shí)現(xiàn)。具體代碼非常簡(jiǎn)單:

import tkinter
import tkinter.font

tkGUI = tkinter.Tk()
print(tkinter.font.families())

  先解釋一下為什么需要 tkGUI = tkinter.Tk() 這段代碼。tkinter是Python內(nèi)置的圖形界面模塊(庫(kù)),源自 TCL/TK 語(yǔ)言。該模塊里的各種函數(shù)(大部分是圖形界面組件,比如按鈕、文字框、輸入框等)都依托于Tk(),正常的開(kāi)發(fā)流程是這樣的:先創(chuàng)建一個(gè)Tk()變量(創(chuàng)建Tk類(lèi)的實(shí)例變量,又稱實(shí)例化Tk類(lèi)),然后創(chuàng)建各種圖形組件(都要指明從屬于Tk實(shí)例變量),等整個(gè)圖形界面都設(shè)置的差不多了,調(diào)用Tk變量的.mainloop()函數(shù),顯示整個(gè)界面。

  在上面的四行代碼里,起關(guān)鍵作用的tkinter.font也從屬于Tk(但不需要指明)。也就是說(shuō),tkinter.font需要程序里有Tk實(shí)例變量的存在,然后才能顯示出字體列表。所以實(shí)際上只是調(diào)用Tk()類(lèi)的一部分功能,并沒(méi)有走完整個(gè)圖形界面的流程,讓tkGUI這段代碼顯得很突兀。

為什么 import 兩次?

  這個(gè)要從Python的模塊(庫(kù))機(jī)制說(shuō)起,模塊是可以包含模塊的,這種情況下叫主模塊和子模塊,tkinter.font就是tkinter的子模塊。在import主模塊時(shí),是否連帶引入了子模塊是由開(kāi)發(fā)作者控制的,如果模塊配置文件里沒(méi)有包含子模塊,則子模塊不會(huì)被自動(dòng)引入。tkinter.font就是需要獨(dú)立引用的子模塊,所以需要improt兩次,第一次引入的tkinter是為了引入tkinter.Tk。

  注意:Python的import是個(gè)隱藏坑,如果自己用Python做點(diǎn)小工作,把py源碼都放到一個(gè)目錄里,能規(guī)避許多問(wèn)題。如果子目錄里放py源碼,則子目錄的py文件需要考慮絕對(duì)引用和相對(duì)引用的問(wèn)題。這方面建議搜索import的研究文章,官方的文檔并不深入。

簡(jiǎn)單寫(xiě)法

一次同時(shí)引入兩個(gè)模塊

from tkinter import Tk, font

  可以同時(shí)引入Tk和font,但如果你需要引入的子模塊比較多的時(shí)候,這種寫(xiě)法不易讀,所以關(guān)鍵還是要弄懂原理。另外前面提到的相對(duì)引用也是使用 from . import xxx 這種語(yǔ)句引入的,所以在源碼目錄結(jié)構(gòu)比較復(fù)雜的項(xiàng)目里,以避坑的角度來(lái)說(shuō) from 才是推薦的引用方式。

  我個(gè)人更建議小項(xiàng)目的py源碼應(yīng)該避免使用子目錄結(jié)構(gòu)(沒(méi)明白import機(jī)制之前)。

其它

Python提示沒(méi)有tkinter模塊?

  安裝的時(shí)候沒(méi)有安裝IDLE導(dǎo)致的,我當(dāng)初就覺(jué)得用不上沒(méi)有裝,今天才發(fā)現(xiàn)TK庫(kù)也沒(méi)有安裝。




Python通過(guò)tkinter列出全部字體名稱,及import模塊的一些知識(shí)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
桦甸市| 通海县| 栾川县| 缙云县| 肃宁县| 莱州市| 左云县| 元江| 巴塘县| 揭东县| 咸丰县| 德令哈市| 嘉黎县| 抚顺市| 安乡县| 体育| 罗源县| 东台市| 开封市| 马山县| 仁化县| 衡阳市| 温宿县| 洪泽县| 新密市| 咸阳市| 余庆县| 灯塔市| 布尔津县| 抚顺县| 西乌| 大理市| 准格尔旗| 长寿区| 樟树市| 临桂县| 海林市| 秀山| 屯留县| 河北区| 雅安市|