Python 输入Tkinter、.get(),字典中的所有数据,在xml中插入utf-8值

Python 输入Tkinter、.get(),字典中的所有数据,在xml中插入utf-8值,python,xml,tkinter,utf-8,overwrite,Python,Xml,Tkinter,Utf 8,Overwrite,我不熟悉stackoverflow和python编程。我想开发一个程序,从Tkinter构建接口获取一些数据,并在发送数据时将数据输入到xml文件中,直接标记由我决定 当直接在控制台中打印时,一切都正常,除非输出在字典中。但即使我只尝试使用一个变量,并且在控制台中以仍然ok的方式输出,当我在xml中插入文本时,我会释放我的字符“čš…”。它还中断了xml中以前存在的所有其他字符 目前,我的代码如下所示: #!/usr/bin/env python # -*- coding: utf-8 -*-

我不熟悉stackoverflow和python编程。我想开发一个程序,从Tkinter构建接口获取一些数据,并在发送数据时将数据输入到xml文件中,直接标记由我决定

当直接在控制台中打印时,一切都正常,除非输出在字典中。但即使我只尝试使用一个变量,并且在控制台中以仍然ok的方式输出,当我在xml中插入文本时,我会释放我的字符“čš…”。它还中断了xml中以前存在的所有其他字符

目前,我的代码如下所示:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from Tkinter import *

def main():
    window = Tk()
    name_l = Label(window, text=" Ime: ")
    name_l.grid(row=2, column=0)
    name = Entry(window)
    name.grid(row=2, column=1)

    # seznam uspehov na spričevalu
    uspeh_list = ["izberi", "odličen"]

    selected_uspeh = StringVar()
    selected_uspeh.set(uspeh_list[0])

    uspeh = Label(window, text=" Uspeh: ")
    uspeh.grid(row=5, column=0, sticky=E)
    uspeh_menu = OptionMenu(window, selected_uspeh, *uspeh_list)
    uspeh_menu.grid(row=5, column=1)

    def get_data():

        name_dijak = name.get()
        uspeh_dijak = selected_uspeh.get()
        podatki_o_spricevalu = {"name": name_dijak, "uspeh":uspeh_dijak}

        print podatki_o_spricevalu
        return podatki_o_spricevalu


    def make_xml():

        podatki = get_data()
        print ("Tole so podatki v obliki dictionary:")
        print podatki
        # odpremo pravo xml datoteko
        import xml.etree.ElementTree as ET

        with open('primer.xml','r') as tree_file:
            tree = ET.parse(tree_file)
        root = tree.getroot()

        name = root[0][1].text
        root[0][1].text = podatki["name"]

        uspeh = root[0][4].text
        root[0][4].text = podatki["uspeh"]
        tree.write('primer_out.xml')

        print root[0][1].text




    # gumb naredi xml
    Label(window, text="Make xml:", ).grid(row=20, column=0, sticky=E)
    Button(window, text="XML ", width=14, command=make_xml).grid(
        row=20, column=1, sticky=E)


    window.mainloop()


if __name__ == "__main__":
    main()
我试着自己做几件事: 1.我试着用另一台计算机,系统是windows和我们的语言,但失败了

  • 我在记事本中打开了vprasaj.py,并将其保存为unicode、utf-8和ASCII,但失败了

  • 我试着解开字典,只用一个变量就可以了。在控制台中打印的所有命令都可以正常工作,但插入xml时就不行了

  • 在字典里我试着给你们写“一些文字”,我在某处看到了它,但不确定它是什么意思:S

  • 我尝试了很多我不完全理解的事情

  • 所以,我需要的可能是一些指导,如何更改我的代码或。例如,关于如何从用户处获取简单文本并将其插入预先编写的xml文件中,以便不丢失任何“馸ž…”


    谢谢你,给我时间,即使只是阅读。正如我所说,我是编程新手,可能无法遵循非常复杂的解决方案。我绝对会努力的。这是一段写得很糟糕的代码,但我会一路完善它。

    我找到了解决问题的方法。要使用“čſš”和其他字段传输名称,我只需要在输出文件中写入编码:

    tree.write('primer_out.xml', encoding="UTF-8")
    
    它在.xml文件中添加了所有字母,这就是我所需要的


    谢谢你的帮助

    请尽量将代码减少到一个最小值。你发布的代码太多了。我编辑了我的代码。左侧输入字段和下拉列表。还是太多了吗?