[英]updating tkinter window (Python 3.4)
大家下午好
我一直在為學校項目制定聯系書計划。 我已經完成了所有基礎代碼。 但是,我決定將其更進一步,並實現一個基本接口。 我正在嘗試使用下面的代碼片段顯示所有聯系人:
elif x==2:
phonebook_data= open(data_path,mode='r',encoding = 'utf8')
if os.stat(data_path)[6]==0:
print("Your contact book is empty.")
else:
for line in phonebook_data:
data= eval(line)
for k,v in sorted(data.items()):
x= (k + ": " + v)
from tkinter import *
root = Tk()
root.title("Contacts")
text = Text(root)
text.insert('1.0', x)
text.pack()
text.update()
root.mainloop()
phonebook_data.close()
該程序有效,但是每個聯系人都會在新窗口中打開。 我想在一個循環中顯示所有相同的信息。 我對tkinter相當陌生,如果代碼令人困惑,我深表歉意。 任何幫助將不勝感激!!
首先,代碼段的頂部可能會更有效率:
phonebook_data= open(data_path,mode='r',encoding = 'utf8')
更改為phonebook_data = open(data_path)
。
之后,只需使用:
contents = phonebook_data.read()
if contents == "": # Can be shortened to `if not contents:`
print("Your contact book is empty.")
順便說一句,優良作法是在使用完文件后立即將其關閉。
phonebook_data = open(data_path)
contents = phonebook_data.read()
phonebook_data.close()
if contents == "":
print("Your contact book is empty.")
現在解決您的圖形問題。 首先,您應該考慮是否真的需要此應用程序的圖形界面。 如果是這樣的話:
# Assuming that the contact book is formatted `Name` `Number` (split by a space)
name_number = []
for line in contents.split("\n"): # Get each line
name, number = line.split()
name_number.append(name + ": " + number) # Append a string of `Name`: `Number` to the list
name_number.sort() # Sort by name
root = Tk()
root.title("Contact Book")
text = Text(root)
text.pack(fill=BOTH)
text.insert("\n".join(name_number))
root.mainloop()
考慮到我給你看了多少,它可能被認為欺騙了你使用它。 盡管對代碼進行了更多研究,但該算法似乎一開始並不起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.