如何在没有大括号或其他符号的情况下将值插入到tkinter条目中?

时间:2017-07-18 19:07:44

标签: python tkinter

所以我的问题是我正在创建一个表单,目前我需要在tk.Entry中输入以便能够保存和加载。我知道它有效,但任何带有多个单词的条目都会被视为元组,加载时会在输入框中显示为{这是什么?},当再次保存时,它变为{{what&#39 ;这是为了?}}等 我已经考虑过使用print命令将元组赋予字符串值,但我不确定在这种情况下如何做到这一点。

P.S。如果有人能告诉我如何替换加载后添加的文本而不是添加,那就太棒了。

def ldload():
    f=open(ldcreds, 'r')
    content = f.readlines()
    l = [x.strip() for x in content] 
    ldsplitlists = [i.split(", ") for i in l]
    Characterentx, Playerentx = ldsplitlists
    Characterent.insert(0, Characterentx)
    Playerent.insert(0, Playerentx)

以下是我如何保存它,如果有帮助

def ldsave():
with open(ldcreds, 'w') as f:
        f.write(Characterent.get()) 
        f.write('\n') 
        f.write(Playerent.get()) 
        f.write('\n')

是的我关闭它,我只是遗漏了大部分变量。

感谢您的帮助,如果我遗失了某些内容,请告诉我

2 个答案:

答案 0 :(得分:1)

我通过仅在元组上循环(在我的情况下是从SQL cursor.fetchall()返回元组)然后为列表框插入选择索引号来解决将数据插入列表框时条目周围的花括号。这消除了花括号在列表框中的显示。

for columns in feedback:
    captured_columns_list.insert(END, columns[0])

答案 1 :(得分:0)

这是一个简单程序的示例,它将接收3个字段并将它们保存到主目录中名为test_text的文件中。

当按下加载按钮时,可以通过使用一些if语句将相同的文件加载到每个字段。

这应该是一个帮助解决问题的好例子。

import tkinter as tk

class App(tk.Frame):

    def __init__(self, parent, *args, **kwargs):
        tk.Frame.__init__(self, parent, *args, **kwargs)

        self.master = parent
        self.save_btn = tk.Button(self.master, text = "Save fields", command= self.ldsave)
        self.save_btn.grid(row=0, column=0)
        load_btn = tk.Button(self.master, text = "Load fields", command= self.ldload)
        load_btn.grid(row=0, column=1)

        label1 = tk.Label(self.master, text = "First Name: ")
        label1.grid(row=1, column=0)
        self.entry1 = tk.Entry(self.master)
        self.entry1.grid(row=1, column=1)

        label2 = tk.Label(self.master, text = "Last Name: ")
        label2.grid(row=2, column=0)
        self.entry2 = tk.Entry(self.master)
        self.entry2.grid(row=2, column=1)

        label3 = tk.Label(self.master, text = "Age: ")
        label3.grid(row=3, column=0)
        self.entry3 = tk.Entry(self.master)
        self.entry3.grid(row=3, column=1)



    def ldsave(self):
        list_of_entries = [self.entry1.get(), self.entry2.get(), self.entry3.get()]
        with open("./test_text", 'w') as f:
            for item in list_of_entries:
                f.write("{}\n".format(item))

    def ldload(self):
        try:
            with open("./test_text", 'r') as f:
                content = f.readlines()
                content = [x.strip() for x in content]
                for i in range(3):
                    if i == 0:
                        self.entry1.delete(0,tk.END)
                        self.entry1.insert(0,content[i])
                    if i == 1:
                        self.entry2.delete(0,tk.END)
                        self.entry2.insert(0,content[i])
                    if i == 2:
                        self.entry3.delete(0,tk.END)
                        self.entry3.insert(0,content[i])
        except:
            print("File test_text does not exist")



if __name__ == "__main__":
    root = tk.Tk() 
    my_app = App(root)
    tk.mainloop()