第一點:程式開頭一定要加底下這行編號宣告
# -*- coding:utf-8 -*-
第二點: 字串要用在 Tk 元件上的一定要宣告成字串變數,字串中可以有許功蓋之類的字,但這些字不能在開頭及結尾
str1 = "Hello world ! 中文字成功顯示在 Tk"
第三點: 設定 Tk 元件文字屬性時再強制設定編碼為 UTF-8
widget = Button(text=str1.encode("UTF-8"), padx=20, pady=20)
以下是一個簡單的範例 :
# -*- coding: utf-8 -*-
from Tkinter import *
class Hello(Frame):
def __init__(self, parent=None):
Frame.__init__(self, parent)
self.pack()
self.make_widgets()
def make_widgets(self):
# widget = Button(self, text=str1, command=self.quit)
# 不能在 Windows 中正常顯示中文字.
str1 = "Hello world ! 中文字成功顯示在 Tk"
widget = Button(text=str1.encode("UTF-8"), padx=20, pady=20)
widget.pack(padx=20, pady=20)
widget.config(cursor='gumby')
widget.config(bd=8, relief=RAISED)
widget.config(bg='dark green', fg='white')
widget.pack(side=LEFT)
if __name__ == '__main__': Hello().mainloop()
相同的程式在Ubuntu 11.04 Alpha 版中的 Python 2.7.1 就沒有這個問題,只要用以上第一點的編碼設定即可,不用針對中文字串再 encode .
2023/01/01 macOS 上安裝的是Python 3.9.13 沒有這個中文顯示問題。就算沒有一開始指定utf-8:
# -*- coding: utf-8 -*-