[Day21] Tkinter 桌面應用程式專案 II


請先在 Accupass 活動通報名,並參考課程兌換教學完成課程兌換。


問題討論區
加入問題討論
作業任務區
提交作業任務


hokou Jan 10, 2020

該如何讓 input 清空輸入?
在嘗試時,會保留之前輸入的值
變成再次輸入要先 del 才可以
有嘗試讓 input 結束後='' 不過似乎也不會清除

另一個是顯示中文,應該也是字型不支援?

使用 repl.it

謝謝

happycoder Jan 12, 2020

您好

您的問題很好~
可以在 def calculate_bmi_number 裡面加入 height_entry.delete(0, 'end') 代表 input entry 從 0 到結束的輸入內容清除:

def calculate_bmi_number():
    height = float(height_entry.get())
    weight = float(weight_entry.get())
    bmi_value = round(weight / math.pow(height, 2), 2)
    result = '你的 BMI 指數為:{} {}'.format(bmi_value, get_bmi_status_description(bmi_value))
    result_label.configure(text=result)
    height_entry.delete(0, 'end')
    weight_entry.delete(0, 'end')

網頁搜尋關鍵字可以找尋到相關說明:
How to clear the Entry widget after a button is pressed in Tkinter

至於中文字體主要是 repl.it 系統的問題,因為 tkinter 字體是讀取該作業系統的字體。
您在本機端應該就可以了。

字體是根據不同作業系統去安裝到系統下,若您作業系統有想要的字體可以透過以下方式來設定想要的字體:

from tkinter.font import Font

myFont = Font(family="Times New Roman", size=12)
text.configure(font=myFont)

參考文件:
https://stackoverflow.com/questions/31918073/tkinter-how-to-set-font-for-text
https://stackoverflow.com/questions/53042505/unusual-tkinter-fonts

謝謝您,加油加油~