我正在尝试使用Tkinter在Text小部件中打开一个Unicode文件,这是我的代码
import codecs
def callback():
matric_name = entry.get()
with open(matric_name.rstrip('\n')+".txt", 'r') as content_file:
content = content_file.read()
#myFile=file(matric_name.rstrip('\n')+".txt") # get a file handle
# myText= myFile.read() # read the file to variable
# f = codecs.open(matric_name.rstrip('\n')+".txt", mode="r", encoding="iso-8859-1")
# myText= f.read()
# print myText
# myFile.close()
print content
mytext.insert(0.0,content)
正确打印,但它没有正确写入文本小部件
小部件的输出为ÿþS
答案 0 :(得分:2)
您需要使用正确的编码来读取文件。这可以使用编解码器模块完成。一旦您正确读取数据,Tk文本小部件将接受unicode字符串。这里的一个例子是将unicode文件加载到文本小部件中。将unicode文本文件名称作为命令行参数。
#!/usr/bin/python
import sys,codecs
from Tkinter import *
class App(Frame):
def __init__(self, parent = None):
Frame.__init__(self, parent)
self.grid()
self.text = Text(self)
self.text.grid()
def Load(self,filename):
with codecs.open(filename, encoding='utf-16') as f:
for line in f:
self.text.insert('end', line)
def main(argv = None):
if argv is None:
argv = sys.argv
app = App()
if len(argv) > 1:
app.after_idle(lambda: app.Load(argv[1]))
app.mainloop()
if __name__=='__main__':
sys.exit(main())