成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

pygame.error: font not initialized的解決及init()到底干了什么

yunhao / 3874人閱讀

摘要:結(jié)果在安裝完之后,安裝也要安裝之后,運(yùn)行常規(guī)的測(cè)試函數(shù)返回的數(shù)字是,排除問(wèn)題的方法就是把已知可以的子模塊都先運(yùn)行掉。說(shuō)了這么多,它到底了哪些子模塊我把官網(wǎng)上面的里介紹的所有帶有的子模塊都運(yùn)行了一遍。

環(huán)境
Python3.6.8
pygame1.9.4

貼上報(bào)錯(cuò)源碼:
import pygame
my_font = pygame.font.SysFont("arial", 16)
my_font = pygame.font.Font("my_font.ttf", 16)
報(bào)錯(cuò)內(nèi)容:
Traceback (most recent call last):
  File "C:UsersHaoziHuangDesktoppygame44.py", line 6, in 
    my_font = pygame.font.SysFont("arial", 16)
  File "D:
jyjPythonpython3.6.8libsite-packagespygamesysfont.py", line 320, in SysFont
    return constructor(fontname, size, set_bold, set_italic)
  File "D:
jyjPythonpython3.6.8libsite-packagespygamesysfont.py", line 243, in font_constructor
    font = pygame.font.Font(fontpath, size)
pygame.error: font not initialized

不管先執(zhí)行哪一個(gè)字體語(yǔ)句都會(huì)報(bào)錯(cuò),
當(dāng)發(fā)生此錯(cuò)誤時(shí)
這時(shí)我們?cè)摍z查
程序開(kāi)始部分是否缺少pygame的初始化語(yǔ)句pygame.init()
而我們想問(wèn)了, pygame.init()到底初始化個(gè)啥呀???
這個(gè)問(wèn)題問(wèn)得好!

以下內(nèi)容轉(zhuǎn)載自:簡(jiǎn)明現(xiàn)代魔法, 感謝大佬的分享 你究竟有(init)幾個(gè)好(子)妹(模)妹(塊)? 當(dāng)我們?cè)趇nit()的時(shí)候,我們?cè)诟墒裁?/strong>

init 這個(gè)單詞在我們用python進(jìn)行面向?qū)ο箝_(kāi)發(fā)的時(shí)候是跑不了的。理解python的__init__()其實(shí)就是和這里的init()作用差不多。做的工作都是__初始化__.至于他在干什么,我的解釋是這樣的:

我們已經(jīng)知道python有一個(gè)特殊的“工具包(模塊)”叫pygame了。在我們要?jiǎng)邮钟盟瓿晌覀兊南敕ㄖ?,電腦這個(gè)強(qiáng)迫癥需要我們檢查一遍,這個(gè)工具包是否完整,能否正常給我們提供幫助。而這個(gè)檢查的動(dòng)作,就是pygame.init()
那么init()實(shí)際上檢查了哪些東西呢?

這個(gè)其實(shí)也不難實(shí)驗(yàn)。直接在shell里面,我執(zhí)行了這個(gè)函數(shù):

>>> import pygame
>>> pygame.init()
(6, 0)

不明所以的,他給了我一個(gè)元組(6,0),我也很不理解,這個(gè)6和0分別代表什么意思。所以查閱了pygame的官方文檔

initialize all imported pygame modules

init() -> (numpass, numfail)

Initialize all imported pygame modules. No exceptions will be raised if a module fails, but the total number if successful and failed inits will be returned as a tuple. You can always initialize individual modules manually, but pygame.init() is a convenient way to get everything started. The init() functions for individual modules will raise exceptions when they fail.

You may want to initialize the different modules separately to speed up your program or to not use things your game does not.

It is safe to call this init() more than once: repeated calls will have no effect. This is true even if you have pygame.quit() all the modules.

初始化所有導(dǎo)入的pygame模塊。如果模塊失敗,則不會(huì)引發(fā)異常,但如果成功且失敗的總數(shù)將作為元組返回。您可以隨時(shí)手動(dòng)初始化單個(gè)模塊,但pygame.init()初始化所有導(dǎo)入的pygame模塊是一種方便的方法來(lái)啟動(dòng)所有內(nèi)容。各個(gè)模塊的init()函數(shù)會(huì)在失敗時(shí)引發(fā)異常。

您可能希望多帶帶初始化不同的模塊以加速您的程序或不使用您的游戲沒(méi)有的東西。

不止一次調(diào)用此init()是安全的:重復(fù)調(diào)用將不起作用。即使你有pygame.quit()所有模塊也是如此。

關(guān)于init()的一個(gè)意外的實(shí)驗(yàn)

我以前從來(lái)沒(méi)有深究過(guò)pygame.init()這個(gè)函數(shù)究竟init了哪些模塊,僅僅在實(shí)踐的過(guò)程中知道,音頻播放和創(chuàng)建文字字體的時(shí)候,如果沒(méi)有init就會(huì)報(bào)錯(cuò)。

今天我在安裝我的新的電腦環(huán)境的時(shí)候,因?yàn)椴恢离娔X的型號(hào),所以并沒(méi)有特意去搜索和安裝電腦對(duì)應(yīng)的驅(qū)動(dòng)。結(jié)果在安裝完python之后,安裝pygame(wheel也要安裝)之后,運(yùn)行常規(guī)的測(cè)試函數(shù)pygame.init()返回的數(shù)字是(5,1)

排除問(wèn)題的方法就是把已知可以init()的子模塊都先運(yùn)行掉。經(jīng)過(guò)排查,發(fā)現(xiàn)pygame無(wú)法調(diào)用聲卡驅(qū)動(dòng)。剩下的事情就好辦很多了,重新安裝一下聲卡驅(qū)動(dòng),重啟之后就可以正常init了。

但是在這個(gè)過(guò)程中,我可以得出比以前更加接近實(shí)際的一個(gè)結(jié)論:

pygame.init()在做的,其實(shí)就是檢查,電腦上一些需要的硬件調(diào)用接口、基礎(chǔ)功能是否有問(wèn)題。如果有,他會(huì)在程序運(yùn)行之前就反饋給你,方便你進(jìn)行排查和規(guī)避。

說(shuō)了這么多,它到底init了哪些子模塊
>>> import pygame
>>> pygame.init()
(6, 0)

>>> pygame.display.init()
>>> pygame.font.init()
>>> pygame.joystick.init()
>>> pygame.mixer.init()

>>> pygame.scrap.init()
Traceback (most recent call last):
  File "", line 1, in 
pygame.error: No display mode is set

>>> pygame.freetype.init()
Traceback (most recent call last):
  File "", line 1, in 
AttributeError: module "pygame" has no attribute "freetype"
>>> pygame.midi.init()
Traceback (most recent call last):
  File "", line 1, in 
AttributeError: module "pygame" has no attribute "midi"
>>> pygame.cdrom.init()

我把pygame官網(wǎng)上面的doc里介紹的所有帶有init的子模塊都運(yùn)行了一遍。

其中midifreetype這兩個(gè)模塊已經(jīng)沒(méi)有了(吐槽一下官方的文檔吧,都沒(méi)了還放著嘛)。

scrap初始化失敗是因?yàn)闆](méi)有窗口。這樣的話(huà),其實(shí)已經(jīng)有5個(gè)模塊是被初始化了。但是scrap在沒(méi)有窗口的情況下會(huì)報(bào)錯(cuò),到底算不算一個(gè)init。還需要后面再仔細(xì)看看文檔和源碼吧。

That"s all!再次感謝這位大佬的分享!

附上官方文檔

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/43216.html

相關(guān)文章

  • 當(dāng)我們談?wù)揤irtual DOM時(shí),我們?cè)谡f(shuō)什么——etch源碼解讀

    摘要:接下來(lái)我們深入函數(shù),看看它干了什么。在我們寫(xiě)的代碼里,我們會(huì)手動(dòng)將元素掛載到樹(shù)上。到這里,我們已經(jīng)完成了元素掛載的全過(guò)程,接下來(lái)我們看一看更新的時(shí)候會(huì)發(fā)生什么。這部分應(yīng)該是負(fù)責(zé)的,我們要在組件的方法中調(diào)用。 etch簡(jiǎn)介 首先我們有必要介紹一下etch。 etch是atom團(tuán)隊(duì)下的開(kāi)源項(xiàng)目,是一套非常簡(jiǎn)潔然而功能十分完善的virtualDOM機(jī)制。我在偶然的情況下接觸到了這個(gè)開(kāi)源項(xiàng)...

    RayKr 評(píng)論0 收藏0
  • SpringIoc源碼解析

    摘要:重要的會(huì)在后面拎出來(lái)單獨(dú)詳解加鎖,防止在過(guò)程中,重啟或銷(xiāo)毀造成不必要的問(wèn)題準(zhǔn)備此上下文以進(jìn)行刷新,設(shè)置其啟動(dòng)日期和,活動(dòng)標(biāo)志以及執(zhí)行屬性源的任何初始化,校驗(yàn)配置文件。以后所有的相關(guān)的操作其實(shí)是委托給這個(gè)實(shí)例來(lái)處理的。 1、先上測(cè)試代碼 public static void main(String[] args){ //配置文件來(lái)啟動(dòng)一個(gè) ApplicationContext App...

    dack 評(píng)論0 收藏0
  • Python學(xué)習(xí)之路13-記分

    摘要:之所以這里要添加這四行代碼,其實(shí)是為了當(dāng)你重新開(kāi)始也就是第二次及以后點(diǎn)擊按鈕游戲時(shí),計(jì)分板能正確顯示。當(dāng)?shù)谝贿\(yùn)行游戲時(shí),沒(méi)有這四行也能正確顯示計(jì)分板。 《Python編程:從入門(mén)到實(shí)踐》筆記。本篇是Python小游戲《外星人入侵》的最后一篇。 1. 前言 本篇我們將結(jié)束Pygame小游戲《外星人入侵》的開(kāi)發(fā)。在本篇中,我們將添加如下內(nèi)容: 添加一個(gè)Play按鈕,用于根據(jù)需要啟動(dòng)游戲以...

    tommego 評(píng)論0 收藏0
  • SpringCloud(第 050 篇)Netflix Eureka 源碼深入剖析(下)

    摘要:于是我們繼續(xù)斷點(diǎn)往下走,發(fā)現(xiàn)對(duì)象里面只有一個(gè)類(lèi)名路徑為。進(jìn)入看看,這個(gè)配置類(lèi)有哪些重要的方法。。。分析一果不其然,方法被調(diào)用了,緊接著也進(jìn)入斷點(diǎn),然后在往下走,又進(jìn)入的方法中的回調(diào)處。 SpringCloud(第 050 篇)Netflix Eureka 源碼深入剖析(下) - 一、大致介紹 1、鑒于一些朋友的提問(wèn)并提議講解下eureka的源碼分析,由此應(yīng)運(yùn)而產(chǎn)生的本章節(jié)的內(nèi)容; 2、...

    xiaoqibTn 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<