【发布时间】:2017-03-24 11:23:18
【问题描述】:
我制作了一个收集数据的 gui,数据保存在 sqlite3 中并显示在列表框中。
创建了一个函数,该函数向用户发送一封包含所选行数据的邮件,并将该行设为黄色。
问题是程序没有保存这些颜色变化。当我退出并再次运行程序时,颜色又变回白色。
做了一个简单的例子来说明问题:
from tkinter import *
top = Tk()
top.geometry("800x400+0+0")
Lb1 = Listbox(top)
Lb1.insert(1, "Python")
Lb1.insert(2, "Perl")
Lb1.insert(3, "C")
Lb1.insert(4, "PHP")
Lb1.insert(5, "JSP")
Lb1.insert(6, "Ruby")
Lb1.pack()
def color_yellow():
Lb1.itemconfig(Lb1.curselection()[0], {'bg':'Yellow'})
b1=Button(top,text="color row Yellow",width=16,command=color_yellow)
b1.place(relx=0.5, rely=0.6, anchor=CENTER)
top.mainloop()
尝试了泡菜,但无法正常工作:
from tkinter import *
import pickle
top = Tk()
top.geometry("800x400+0+0")
Lb1 = Listbox(top)
Lb1.insert(1, "Python")
Lb1.insert(2, "Perl")
Lb1.insert(3, "C")
Lb1.insert(4, "PHP")
Lb1.insert(5, "JSP")
Lb1.insert(6, "Ruby")
Lb1.pack()
def color_yellow():
Lb1.itemconfig(Lb1.curselection()[0], {'bg':'Yellow'})
return
pickle_out = open("dict.pickle","wb")
pickle.dump(color_yellow, pickle_out)
pickle_out.close()
pickle_in = open("dict.pickle","rb")
color_yellow = pickle.load(pickle_in)
b1=Button(top,text="color row Yellow",width=16,command=color_yellow)
b1.place(relx=0.5, rely=0.6, anchor=CENTER)
top.mainloop()
【问题讨论】:
-
好吧,我。目前还不清楚您要实现什么。但是,一般来说,如果您想从循环中保存一些数据,我建议您让函数返回所需数据或将其附加到外部列表中但可从函数内部访问(作为函数参数或(如果绝对必要)作为全局列表)。
-
感谢您的回复。我添加了一些信息。希望现在清楚一点。
-
根据您提供的新输入编辑我的答案
标签: python python-3.x listbox