在pygame中顯示中文

2021-08-23 13:37:59 字數 2168 閱讀 3703

在pygame中顯示中文

最近對python產生了興趣,進而又對pygame產生了興趣。我本身對遊戲程式設計就很著迷,而pygame的簡單又讓我的著迷程度更進了一步。

做乙個堂堂的中國人,自然希望在遊戲中的文字是中文了,但是在遊戲中顯示中文似乎沒有那麼簡單。經過一番研究,終於搞清楚怎樣在pygame中顯示中文了。

下面就以pygame文件中的一段**為例,介紹如何顯示中文。

# -*- coding: gbk -*-

import pygame

from pygame.locals import *

import local2utf8

def main():

# initialise screen

pygame.init()

screen = pygame.display.set_mode((650, 150))

pygame.display.set_caption((u'基礎 pygame 程式').encode('utf-8'))

# fill background

background = pygame.su***ce(screen.get_size())

background = background.convert()

background.fill((250, 250, 250))

# display some text

#font = pygame.font.font(none, 60) #原始**,使用預設字型,不能顯示中文

#font = pygame.font.font('../fredguo/simkai.ttf', 60) #正確,檔名可以包含路徑

#font = pygame.font.font('楷體', 60) #錯誤,name引數應該是字型的檔名

font = pygame.font.sysfont('楷體', 60) #正確,name引數應該是字型名,並且字符集要與系統的相同

text = font.render(u"hello 我愛你", 1, (10, 10, 10)) #顯示內容必須轉換成unicode,否則中文不能正常顯示

textpos = text.get_rect()

textpos.center = background.get_rect().center

background.blit(text, textpos)

# blit everything to the screen

screen.blit(background, (0, 0))

pygame.display.flip()

# event loop

while 1:

for event in pygame.event.get():

if event.type == quit:

return

screen.blit(background, (0, 0))

pygame.display.flip()

if __name__ == '__main__': main()

**中的注釋說的已經很清楚了,在這裡做一下簡單的總結:

 首先,使視窗的標題顯示中文是很簡單的,只要將字符集轉換成utf-8就可以;

 然後,我們說說稍微麻煩些的內容。在pygame中顯示文字主要是用font類,在建立類的例項時就需要指定字型。如果想使用pygame的預設欄位只需將none傳遞font就可以,但是這樣不可以顯示中文。

 要使用font顯示中文主要有兩種方法:乙個是使用pygame.font.font(name, size)來建立新的font例項,其中name是字型的檔名(.ttf或.ttc檔案),可能包含路徑,這需要你知道字型檔案的存放位置,方便起見,可以將檔案copy到程式目錄下。另乙個方法是使用pygame.font.sysfont(name, size)方法建立font的例項,它利用系統的可用字型,如果失敗會默默地使用pygame的預設字型,其中name是字型的名稱(楷體、宋體等);需要注意的是name的字符集要與系統的使用的字符集盡量一致,否則可能出現問題。

 在使用font的render()方法繪製中文時需要注意將字符集轉換成unicode,否則無法正常顯示中文。

ok,that』s it。最後需要提醒一下,一定要注意自己檔案使用的字符集,因為並不是在檔案頭指定什麼字符集就會自動地用什麼字符集儲存檔案。

在matplotlib中顯示中文

matplotlib顯示不了中文,主要問題在於沒有指定中文字型。解決方法有有很多種,有修改matplotlib配置檔案,還有替換matplotlib的mpl data資料夾下字型檔案的,這些方法不夠靈活,以下兩種方法相對靈活一些。方法一 coding utf 8 import matplotlib....

QT 在lineEdit中顯示中文亂碼

最近學qt,打算用qt做乙個天氣預報,從獲取的檔案 含有中文 中提取天氣資訊,然後載入到lineedit控制項中,遇到了中文顯示亂碼的問題。嘗試了許多,最後發現有一種可行的辦法 由於從檔案中提取出來的資料為qbytearray型別的,而lineedit需要的是qstring型別的,所以如下寫ok m...

python 在windows 中文顯示

今天看到mechanize,在網上找例子實驗,發現只要 裡出現中文,就會報錯 python的預設編碼檔案是用的ascii碼 使用notepad 1 檔案編碼為 以utf 8無bom格式編碼 如果python檔案中使用了中文等非英語字元,就會報錯了 解決的方法 在python原始檔的第一行加上 cod...