中文編程pygame游戲教程7_顯示文字

在pygame中,文字不能直接顯示到屏幕, 需要先渲染成圖像。先創(chuàng)建具有給定字體大小的對象。再將文本轉(zhuǎn)換為具有給定顏色的圖像。 最后將圖像信息用 貼圖()方法 傳輸?shù)狡聊簧?。下面是步驟:
創(chuàng)建字體后,無法更改其大小。 對象用于從字符串創(chuàng)建對象。Pygame沒有提供將文本寫入對象的直接方法。該方法必須是 用于從文本創(chuàng)建 表層(Surface)對象,然后可以將其傳送到屏幕上。 該方法只能呈現(xiàn)單行文字。 不能呈現(xiàn)換行符。
初始化字體
上面的代碼字體.系統(tǒng)字體(空, 48)中第一個參數(shù)是空, 代表使用默認字體, 默認字體不支持中文, 顯示中文必須指定字體名稱, 比如字體.系統(tǒng)字體('SIMHEI', 48)是黑體, 字體的名稱必須是運行代碼的電腦所安裝的, 可以用字體.獲取可用字體()方法獲取系統(tǒng)安裝的系統(tǒng)名稱.對于windows電腦,可以打開C:\Windows\Fonts查看安裝字體, 參數(shù)使用的字體名稱是字體文件的文件名, 不一定是顯示的名稱, 我們在查看黑體字體的屬性可以看到它的字體文件名是simhei, 其他的字體也是如此.但是有些中文字體可能不能正常顯示, 建議使用前測試一下.

字體.獲取可用字體()返回所有已安裝字體的列表。 以下代碼檢查系統(tǒng)上有哪些字體以及有多少, 并將它們打印到控制臺:
呈現(xiàn)文本
字體對象可以將給定的文本呈現(xiàn)為圖像。在下面的示例中, 我們在文本圖像周圍放置一個藍色邊框:
然后,我們再創(chuàng)建兩種字體并渲染文本:
最后,文本圖像像常規(guī)圖像一樣被傳送到屏幕上:
結(jié)果如下:

這是完整的代碼:
使用鍵盤編輯文本
鍵盤事件可用于編輯文本。首先,我們創(chuàng)建一個文本保存在一個字符串變量中,并將其渲染為圖像:
然后我們定義邊界矩形,進而定義一個很窄的矩形作為光標 并列到文本右側(cè):
在事件循環(huán)中,我們添加?鍵盤按下事件?。如果按鍵是 BACKSPACE(退格鍵) 并且字符串的長度大于 0,然后我們刪除最后一個字符, 否則,我們將新字符附加到文本變量:
然后我們渲染修改后的文本,更新邊框,并放置光標, 更新的光標位置:
為了使光標更明顯,我們讓它每 0.5 秒閃爍一次。 我們使用 time.time() 浮點值來執(zhí)行此操作:

遺憾的是, 這樣并不能輸入中文. 下面的代碼中使用了easygui庫的輸入框, 當按下鍵盤的ctrl+v時, 彈出輸入框輸入后會插入到文本右側(cè).
完整代碼如下: