正如你可以從我的代碼中看到的,我將tk.Frame子類化爲一個tkinter gui創建一個自定義小部件。我將在主GUI中實例化這個類,並且需要定期更改其中的標籤值。如果我使用tkinter變量類StringVar(),我需要使用它的.set()方法來更改引用它們的標籤的值。將tkinter變量類用作類屬性是不好的做法嗎?
這是不好的做法?我的意思是,如果除了我自己以外的人使用這個自定義小部件,他們將不得不知道使用.set()方法來傳遞一個新的值。有些事情對我來說並不合適......也許我正在推翻它。謝謝。
import tkinter as tk
class CurrentTempFrame(tk.Frame):
def __init__(self, parent, width=200, height=120,
background_color='black',
font_color='white',
font = 'Roboto'):
# Call the constructor from the inherited class
tk.Frame.__init__(self, parent, width=width, height=height,
bg=background_color)
# Class variables - content
self.temperature_type = tk.StringVar()
self.temperature_type.set('Temperature')
self.temperature_value = tk.StringVar()
self.temperature_value.set('-15')
self.temperature_units = tk.StringVar()
self.temperature_units.set('°F')
self.grid_propagate(False) # disables resizing of frame
#self.columnconfigure(0, weight=1)
#self.rowconfigure(0, weight=1)
title_label = tk.Label(self,
textvariable=self.temperature_type,
font=(font, -20),
bg=background_color,
fg=font_color)
value_label = tk.Label(self,
textvariable=self.temperature_value,
font=(font, -80),
bg=background_color,
fg=font_color)
units_label = tk.Label(self,
textvariable=self.temperature_units,
font=(font, -50),
bg=background_color,
fg=font_color)
title_label.grid(row=0, column=0)
value_label.grid(row=1, column=0)
units_label.grid(row=1, column=1, sticky='N')
if __name__ == "__main__":
root = tk.Tk()
current_temp = CurrentTempFrame(root, font_color='blue')
current_temp.temperature_value.set('100')
current_temp.grid(column=0, row=0, sticky='NW')
root.mainloop()
謝謝基督徒,這是有道理的,我很感激。現在瞭解更多關於doc-strings的信息! –
當然@Mike,很樂意幫忙。 [這是一個很好的與記錄Python代碼相關的資源](http://blog.dolphm.com/pep257-good-python-docstrings-by-example/)幫助你開始。 –