我有以下幾段代碼可以創建一個頂級視窗并將字典決議為一個 Text 小部件:
def escrito(**kwargs):
write_window = Toplevel(root)
#write_window.title(kwargs) (problematic code)
writing_box = tk.Text(write_window, font = ("calibri", 20), width = 60, height = 15, wrap=WORD)
writing_box.pack(expand = tk.YES, fill = tk.X)
writing_box.grid(row = 0, column = 0, sticky = 'nswe')
texto = '\n'.join(key ":\n" value for key, value in kwargs.items())
writing_box.insert("1.0", texto)
def septic_osteo():
escrito(**infections.Septic_arthritis)
Septic_arthritis = {
'Empirical Treatment':
'Flucloxacillin 2g IV 6-hourly',
'If non-severe penicillin allergy':
'Ceftriaxone IV 2g ONCE daily',
'If severe penicillin allergy OR if known to be colonised with
MRSA':
'Vancomycin infusion IV, Refer to Vancomycin Prescribing
Policy',
'If systemic signs of sepsis': 'Discuss with Consultant
Microbiologist'
}
因此,當我運行代碼時,escrito 函式會決議字典并將其內容寫入包含在頂層視窗中的文本小部件。我想知道的是如何使用字典的名稱動態重命名 Toplevel 視窗。我知道我可以這樣做:
def septic_osteo():
escrito(**infections.Septic_arthritis)
write_window.title('Septic_arthritis)
但是我確實有像上面那樣的 100 個函式,所以,除了勞動密集型之外,我不確定是否是更 Pythonic 的方式,那么,有沒有辦法用字典名稱重命名視窗?(即'Septic_arthritis)謝謝
uj5u.com熱心網友回復:
如果您的資料位于名為 的物件中infections,并且具有諸如 之類的屬性Septic_arthritis,那么最直接的解決方案是將資料和屬性作為單獨的引數傳遞,然后使用它getattr來獲取特定感染的資料。
它看起來像這樣:
def escrito(data, infection):
write_window = Toplevel(root)
write_window.title(infection)
writing_box = tk.Text(write_window, font = ("calibri", 20), width = 60, height = 15, wrap="word")
writing_box.pack(expand = tk.YES, fill = tk.X)
writing_box.grid(row = 0, column = 0, sticky = 'nswe')
texto = '\n'.join(key ":\n" value for key, value in getattr(data, infection).items())
writing_box.insert("1.0", texto)
上述代碼的重要一點是它用于getattr(data, infection)獲取給定感染的資料。
如果你想創建一個按鈕來呼叫這個函式,它可能看起來像這樣:
button = tk.Button(..., command=lambda: escrito(infections, "Septic_arthritis"))
這將呼叫escrito帶有兩個引數的命令:包含所有感染的物件,以及要顯示的特定資訊的鍵。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/370479.html
