用Python将Unicode文件写入文本小部件

2024-09-28 03:23:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Tkinter在文本小部件中打开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


Tags: name文本txtreadget部件opencontent
1条回答
网友
1楼 · 发布于 2024-09-28 03:23:16

您需要使用正确的编码来读取文件。这可以使用编解码器模块来完成。一旦您正确地读取了数据,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())

相关问题 更多 >

    热门问题