最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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ó)家法律
定边县| 海伦市| 潜山县| 佛坪县| 杭州市| 通化县| 合作市| 江达县| 安宁市| 江油市| 仙桃市| 讷河市| 收藏| 太原市| 休宁县| 陆良县| 柳江县| 广德县| 库伦旗| 本溪市| 尤溪县| 澎湖县| 什邡市| 丰宁| 韶关市| 满洲里市| 绥宁县| 南宫市| 体育| 临洮县| 昭苏县| 崇仁县| 治多县| 中西区| 临泉县| 拉萨市| 如东县| 泸州市| 永兴县| 八宿县| 巫山县|