1
當我嘗試從Entry中獲取中文字符串時發生了UnicodeEncodeError,這是tkinter模塊中的一個小部件。我工作的操作系統是Windows 7,Python的版本是Python3.4。該部件在英文字符上效果很好。這是我的程序。UnicodeEncodeError嘗試從Python中的Tkinter.Entry中獲取中文字符串
from tkinter import *
class LabelEntry(Frame):
def __init__(self, parent, title, **config):
Frame.__init__(self, parent, **config)
self.title = title
self.user_input = StringVar(parent)
self.pack()
self.makeWidgets()
def makeWidgets(self):
Label(self, text=self.title).pack(side=LEFT)
ent = Entry(self, textvariable=self.user_input)
ent.pack(side=RIGHT)
ent.bind('<Return>', self.onReturnKey)
def onReturnKey(self, event):
print(self.user_input.get())
if __name__ == '__main__':
tkroot = Tk()
widget = LabelEntry(tkroot, 'corp_title')
widget.mainloop()
由於我不知道如何解決問題,我嘗試修改程序。這一次,我不使用StringVar在Entry中保存字符串,而是使用Entry.get()直接獲取值。但是,輸入中文字符串後發生同樣的異常。這是新的程序。
from tkinter import *
class LabelEntry(Frame):
def __init__(self, parent, title, **config):
Frame.__init__(self, parent, **config)
self.title = title
self.pack()
self.makeWidgets()
def makeWidgets(self):
Label(self, text=self.title).pack(side=LEFT)
self.ent = Entry(self)
self.ent.pack(side=RIGHT)
self.ent.bind('<Return>', self.onReturnKey)
def onReturnKey(self, event):
print(self.ent.get())
if __name__ == '__main__':
tkroot = Tk()
widget = LabelEntry(tkroot, 'corp_title')
widget.mainloop()
請幫幫我,謝謝!
我試圖在程序的開頭使用魔法字符串「# - * - coding:utf-8 - * - 」,它不起作用。我已經在Entry.get()和Tkinter.StringVar()。get()這兩個主題上尋找了pydoc,他們都沒有關於unicode編碼的選項。 –
完整的追溯?在你的代碼或者tkinter的某個地方,有人試圖將一個unicode字符串轉換成ascii字符串,並且回溯應該告訴你在哪裏。 – NightShadeQueen
我不明白。當我將程序複製到IDLE並按下F5時,它對中文字符串很有效。在此之前,我嘗試在CMD中運行該程序,並且如上所述失敗。很奇怪!我認爲這不是語言問題? –