我在tkinter中擁有如下的Treeview:
我在tkinter中擁有如下的Treeview:
#Styling the Treeview below.
style = ttk.Style()
style.theme_use("alt")
style.configure("Treeview",
background="銀色"。
foreground="green",
)
style.map('Treeview',
background=[('selected','#FF1800')])
#Weapons list Treeview武器串列。
weaponList = ttk. Treeview(root,columns=("游戲","武器","向下", "Up","Left","Right")
#設定列的文本。
weaponList.heading("游戲",text="游戲")
weaponList.heading("Weapon",text="Weapon")
weaponList.heading("Down",text="Down")
weaponList.heading("Up",text="Up")
weaponList.heading("Left",text="Left")
weaponList.heading("Right",text="Right")
#顯示標題(洗掉多余的列)。
weaponList['show']='headings'。
#設定列的寬度和對齊方式。
weaponList.column("Game",width=60, anchor="center")
weaponList.column("Weapon",width=70, anchor="center")
weaponList.column("Down",width=60, anchor="center")
weaponList.column("Up",width=40, anchor="center")
weaponList.column("Left"/span>,width=40, anchor="center")
weaponList.column("Right",width=50, anchor="center")
weaponList.place(x=330,y=120, width=350, height=420)
這看起來像這樣:
問題是,當關閉應用程式時,在treeview中輸入的資料沒有被保存。這就是為什么我想把輸入的資料保存在.json
為此,我有以下函式:
#Add weapon to ListBox when click the AddWeapon Button添加武器。
def addWeapon():
if (noAddDefaultWeaponValues()==False)。
tkinter.messagebox.showerror('武器添加錯誤','你輸入了默認值或空資料!')
回傳。
#添加資料。
data = {}
data[' weapons'] = []
data['weapons'].append({
'game': weaponGameEntry.get(),
' weapon': weaponNameEntry.get(),
'down': recoilDownEntry.get(),
'up': recoilUpEntry.get(),
'left': recoilLeftEntry.get(),
'right': recoilRightEntry.get()
})
with open('json/weapons.json', 'w') as save:
json.dump(data, save, indent=4)
weaponList.insert(parent='', index='end', text="", values=(weaponGameEntry. get(), weaponNameEntry.get(),recoilDownEntry.get(),recoilUpEntry.get(),recoilLeftEntry.get(),recoilRightEntry.get())
#Clear boxes when add and insert the default values。
weaponGameEntry.delete(0,END)
weaponGameEntry.insert(0,"INSERT GAME"/span>)
weaponNameEntry.delete(0,END)
weaponNameEntry.insert(0,"INSERT WEAPON"/span>)
recoilDownEntry.delete(0,END)
recoilDownEntry.insert(0,"0"/span>)
recoilUpEntry.delete(0,END)
recoilUpEntry.insert(0,"0")
recoilLeftEntry.delete(0,END)
recoilLeftEntry.insert(0,"0"/span>)
recoilRightEntry.delete(0,END)
recoilRightEntry.insert(0,"0")
這樣做的問題是,它只添加最后一條記錄,而不是連續添加。
例如,我添加了接下來的2件武器:
而.json看起來是這樣的:
{
"武器": [
{
"游戲": "GAME2",
"武器": "WEAPON2",
"down": "0",
"向上": "0",
"左": "0",
"right": "0", "右".
}
]
}
代替:
{
"武器": [
{
"游戲": "GAME1",
"武器": "WEAPON1",
"down": "0",
"向上": "0",
"左": "0",
"right": "0", "右".
},
{
"游戲": "GAME2",
"武器": "WEAPON2",
"down": "0",
"向上": "0",
"左": "0",
"right": "0", "右".
}
]
}
uj5u.com熱心網友回復:
我把我對代碼的修改留給了保存輸入資訊的函式 :
#Add weapon to ListBox when click the AddWeapon Button.
def addWeapon():
if (noAddDefaultWeaponValues()==False)。
tkinter.messagebox.showerror('武器添加錯誤','你輸入了默認值或空資料!')
回傳。
#添加資料到json檔案。
with open('json/weapons.json', 'r) as save:
weaponsList = json.load(save.read())[' weapons']
weaponsList.append({
'game': weaponGameEntry.get(),
' weapon': weaponNameEntry.get(),
'down': recoilDownEntry.get(),
'up': recoilUpEntry.get(),
'left': recoilLeftEntry.get(),
'right': recoilRightEntry.get()
})
weaponsDict = {}
weaponsDict['武器'] = weaponsList
with open('json/weapons.json', 'w') 如寫。
json.dump(weaponsDict, write, indent=4)
weaponList.insert(parent='', index='end', text="", values=(weaponGameEntry. get(), weaponNameEntry.get(),recoilDownEntry.get(),recoilUpEntry.get(),recoilLeftEntry.get(),recoilRightEntry.get())
#Clear boxes when add and insert the default values。
weaponGameEntry.delete(0,END)
weaponGameEntry.insert(0,"INSERT GAME"/span>)
weaponNameEntry.delete(0,END)
weaponNameEntry.insert(0,"INSERT WEAPON"/span>)
recoilDownEntry.delete(0,END)
recoilDownEntry.insert(0,"0"/span>)
recoilUpEntry.delete(0,END)
recoilUpEntry.insert(0,"0")
recoilLeftEntry.delete(0,END)
recoilLeftEntry.insert(0,"0"/span>)
recoilRightEntry.delete(0,END)
recoilRightEntry.insert(0,"0")
我也將保存的值插入到打開應用程式時的treeview中,通過這種方式可以看到已經添加的武器。
#Inserting the already existing weapons to the listbox.
def insert()。
with open('json/weapons.json'/span>, 'r'/span>) as read:
weaponsList = json.load(read.read())['weapons']
weaponsDict = {}
weaponsDict['武器'] = weaponsList
for weapon in weaponsList:
武器串列。 insert(parent='', index='end', text="", values=(weapon['game'], weapon['weapon'],weapon['down'] 。 武器['up'],武器['left'],武器['right'])
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/319457.html
標籤:
上一篇:使用Jupyter筆記本--對于這個tkinter演算法來說,哪個是最好的?quit(),exit(),sys.exit(),oros.exit()?
