为什么我需要从tkinter模块显式导入字体模块,即使已经使用“*”导入完整模块?

我试图运行给予蟒蛇片段:为什么我需要从tkinter模块显式导入字体模块,即使已经使用“*”导入完整模块?

from tkinter import * 

from tkinter import font

root = Tk()

list_fonts = list(font.families())

for i in list_fonts:

print(i)

root.mainloop()

我得到的输出:

Sitka Display 

Sitka Banner

Nirmala UI Semilight

Leelawadee UI

Gadugi

Microsoft New Tai Lue

DokChampa

Segoe UI

Calibri

Miriam

Angsana New

Iskoola Pota

Kartika

Segoe UI Semilight

Vijaya

Nirmala UI

Mongolian Baiti

Microsoft YaHei

@Microsoft YaHei

Microsoft YaHei UI

@Microsoft YaHei UI

Vani

Arial Black

IrisUPC

Batang

@Batang

BatangChe

@BatangChe

Gungsuh

@Gungsuh

GungsuhChe

@GungsuhChe

Gautami

Segoe UI Black

Calibri Light

Cambria

Rod

Georgia

Verdana

Symbol

Euphemia

Raavi

Corbel

Shruti

Consolas

Segoe UI Semibold

Simplified Arabic

Cambria Math

DaunPenh

Nyala

Constantia

Yu Gothic

@Yu Gothic

CordiaUPC

Khmer UI

Aharoni

Microsoft Uighur

Times New Roman

Times New Roman CYR

Times New Roman TUR

Times New Roman CE

Times New Roman Baltic

Times New Roman Greek

Segoe Script

Candara

Ebrima

DilleniaUPC

MS Mincho

@MS Mincho

MS PMincho

@MS PMincho

Browallia New

Segoe UI Light

Segoe UI Emoji

Aldhabi

DFKai-SB

@DFKai-SB

SimHei

@SimHei

Lao UI

Courier New

Courier New CYR

Courier New TUR

Courier New CE

Courier New Greek

Courier New Baltic

Kalinga

Microsoft PhagsPa

Tahoma

EucrosiaUPC

KaiTi

@KaiTi

SimSun

@SimSun

NSimSun

@NSimSun

Meiryo

@Meiryo

Meiryo UI

@Meiryo UI

Sylfaen

Tunga

Urdu Typesetting

Microsoft YaHei Light

@Microsoft YaHei Light

Microsoft YaHei UI Light

@Microsoft YaHei UI Light

Webdings

Plantagenet Cherokee

Gabriola

MS Gothic

@MS Gothic

MS UI Gothic

@MS UI Gothic

MS PGothic

@MS PGothic

Gulim

@Gulim

GulimChe

@GulimChe

Dotum

@Dotum

DotumChe

@DotumChe

Lucida Sans Unicode

Andalus

Leelawadee

FangSong

@FangSong

Yu Mincho Demibold

@Yu Mincho Demibold

David

Miriam Fixed

Impact

Levenim MT

Segoe Print

Estrangelo Edessa

Leelawadee UI Semilight

Microsoft JhengHei

@Microsoft JhengHei

Microsoft JhengHei UI

@Microsoft JhengHei UI

Narkisim

MingLiU-ExtB

@MingLiU-ExtB

PMingLiU-ExtB

@PMingLiU-ExtB

MingLiU_HKSCS-ExtB

@MingLiU_HKSCS-ExtB

Yu Mincho Light

@Yu Mincho Light

Latha

Microsoft Sans Serif

FrankRuehl

MingLiU

@MingLiU

PMingLiU

@PMingLiU

MingLiU_HKSCS

@MingLiU_HKSCS

Myanmar Text

Yu Gothic Light

@Yu Gothic Light

Javanese Text

Microsoft Himalaya

Yu Mincho

@Yu Mincho

Lucida Console

Arabic Typesetting

Microsoft Yi Baiti

MV Boli

Wingdings

MT Extra

Arial Unicode MS

@Arial Unicode MS

Century

Wingdings 2

Wingdings 3

Book Antiqua

Century Gothic

Haettenschweiler

MS Outlook

Tempus Sans ITC

Pristina

Papyrus

Mistral

Lucida Handwriting

Kristen ITC

Juice ITC

French Script MT

Freestyle Script

Bradley Hand ITC

Arial Narrow

Garamond

Monotype Corsiva

Algerian

Baskerville Old Face

Bauhaus 93

Bell MT

Berlin Sans FB

Bernard MT Condensed

Bodoni MT Poster Compressed

Britannic Bold

Broadway

Brush Script MT

Californian FB

Centaur

Chiller

Colonna MT

Cooper Black

Footlight MT Light

Harlow Solid Italic

Harrington

High Tower Text

Jokerman

Kunstler Script

Lucida Bright

Lucida Calligraphy

Lucida Fax

Magneto

Matura MT Script Capitals

Modern No. 20

Niagara Engraved

Niagara Solid

Old English Text MT

Onyx

Parchment

Playbill

Poor Richard

Ravie

Informal Roman

Showcard Gothic

Snap ITC

Stencil

Viner Hand ITC

Vivaldi

Vladimir Script

Wide Latin

Tw Cen MT

Tw Cen MT Condensed

Script MT Bold

Rockwell Extra Bold

Rockwell Condensed

Rockwell

Rage Italic

Perpetua Titling MT

Perpetua

Palace Script MT

OCR A Extended

Maiandra GD

Lucida Sans Typewriter

Lucida Sans

Imprint MT Shadow

Goudy Stout

Goudy Old Style

Gloucester MT Extra Condensed

Gill Sans Ultra Bold Condensed

Gill Sans Ultra Bold

Gill Sans MT Condensed

Gill Sans MT

Gill Sans MT Ext Condensed Bold

Gigi

Franklin Gothic Medium Cond

Franklin Gothic Heavy

Franklin Gothic Demi Cond

Franklin Gothic Demi

Franklin Gothic Book

Forte

Felix Titling

Eras Medium ITC

Eras Light ITC

Eras Demi ITC

Eras Bold ITC

Engravers MT

Elephant

Edwardian Script ITC

Curlz MT

Copperplate Gothic Light

Copperplate Gothic Bold

Century Schoolbook

Castellar

Calisto MT

Bookman Old Style

Bodoni MT Condensed

Bodoni MT Black

Bodoni MT

Blackadder ITC

Arial Rounded MT Bold

Agency FB

Bookshelf Symbol 7

MS Reference Sans Serif

MS Reference Specialty

Berlin Sans FB Demi

Tw Cen MT Condensed Extra Bold

除了作为一个Tkinter的窗口

但是,当我试图执行的代码段如下所示:

from tkinter import * 

root = Tk()

list_fonts = list(font.families())

for i in list_fonts:

print(i)

root.mainloop()

我收到一个错误:

Traceback (most recent call last): 

File "fonts.py", line 4, in <module>

list_fonts = list(font.families())

NameError: name 'font' is not defined

我怀疑是为什么我明确需要从tkinter导入字体。正如你所看到的,我已经在第1行中使用“*”符号导入了字体模块。请举一些例子,以便我能够理解这是如何发生的。

回答:

import *不导入所有内容。一种不导入所有内容的方式是it does not automatically search for submodules of a package。 fonttkinter程序包的子模块,如果它尚未被某个其他导入加载,from tkinter import *将不会找到tkinter.font

回答:

答案很简单:Python不会自动导入所有模块层次结构,只是因为您导入了顶层结构。那些做这些的人(例如os,会使os.path可用)必须明确地编写代码。

只需添加import tkinter.font,和它的作品

然而,由于IDLE使用Tkinter的本身,它已经进口tkinter.font,因此你认为你可以逃脱而没有进口, 我希望这有助于:)

回答:

模块可以具有子模块和/或函数,变量等。由from <module> import *导入的内容取决于模块的实现方式。大多数模块不会自动导入子模块。
在这种情况下,Tkinter的是主模块,以及字体是一个子模块,和Tkinter的不被设计为自动地导入所有的子模块。所以当你做from tkinter import *,你抓住所有的功能和变量,但不是子模块。子模块必须明确导入才能使用。您可以输入:

from tkinter import * 

from tkinter import font

或者你也可以输入:

import tkinter # actually not needed since the below "does both" 

import tkinter.font

的区别是你是否要使用或tkinter.font.Font(...

以上是 为什么我需要从tkinter模块显式导入字体模块,即使已经使用“*”导入完整模块? 的全部内容, 来源链接: utcz.com/qa/259651.html

回到顶部