-1
我正在用列表框來構建一個python tkinter軟件,但列表框不會從列表(即在一個字典內)通過for循環加載值。Python tkinter - numpy - Listbox不加載值
該字典存儲在一個numpy文件中,具有以下結構:m={"subject":["subjectname"], ...}
。但我不認爲這個問題是由文件或字典,因爲它與TTK組合框效果很好引起...
這裏是我的代碼:
import os.path
import numpy as np
global m
global fn_sub
global path
m={}
# filename for the file to save
fn_sub = "subjects.npy"
path = os.path.expanduser(r'~\Documents\School Life Diary')
# check the directory does not exist
if not(os.path.exists(os.path.join(path,fn_sub))):
# write the file in the new directory
np.save(os.path.join(path, fn_sub), m)
from tkinter import *
import tkinter.messagebox
from tkinter.ttk import *
global old_mat
def inizializza():
try:
m=np.load(os.path.join(path, fn_sub)).item()
except ValueError:
m={}
### other code... ###
def creaFinestra():
global wim
wim=Toplevel()
inizializza()
wim.title("Materie - School Life Diary")
wim.iconbitmap("sld_icon_beta.ico")
wim.geometry("%dx%d+%d+%d" % (325, 325, 600, 200))
s=Style()
try:
s.theme_use("vista")
except:
s.theme_use()
fim=Frame(wim)
fim.pack()
global lb
lb=Listbox(fim,selectmode="SINGLE")
lb.pack(padx=10,pady=10)
for e in m:
lb.insert("end",*m[e])
''' I also used this, but doesn't work...
for e in m:
lb.insert(list(m.keys()).index(e),m[e][0])
'''
fim2=Frame(wim)
fim2.pack()
imageAdd=PhotoImage(file=r"images/add_FAB.png")
imageMod=PhotoImage(file=r"images/mod_FAB.png")
imageDel=PhotoImage(file=r"images/trash_FAB.png")
bAdd=Button(fim2,image=imageAdd,command=add)
bAdd.image=imageAdd
bMod=Button(fim2,image=imageMod,command=edit)
bDel=Button(fim2,image=imageDel,command=delete)
bAdd.grid(row=0,column=0,padx=10,pady=10)
bMod.grid(row=0,column=1,padx=10,pady=10)
bDel.grid(row=0,column=2,padx=10,pady=10)
wim.mainloop()
你能幫助我嗎? 謝謝
「不加載值」是什麼意思?你有錯誤嗎?它是否加載了錯誤的數據?它是否以錯誤的格式加載正確的數據?你是否證實'm [e]'包含你認爲它包含的內容? –
1.我指的是列表框爲空,並且數據不會被添加到列表框 2.否 3.無 4.無 5.我用'打印試圖(M [E])'但它不不打印...似乎for循環不會運行... –
您需要做的第一件事是驗證您的變量中有數據。如果沒有,問題不在列表框中。 –