嘿呀,朋友!你想想,平時算賬的時候,要是有個順手的計算器多好啊!咱今天就用Python的Tkinter來打造一個。Tkinter是Python的標準GUI庫,用來創建圖形用户界面超方便。安裝也簡單,在命令行敲pip install tkinter就行。

下面就是計算器的代碼啦:

import tkinter as tk

# 創建主窗口
root = tk.Tk()
root.title("Calculator")

# 顯示結果的標籤
result_label = tk.Label(root, text="0", font=("Arial", 20))
result_label.grid(row=0, column=0, columnspan=4)

# 按鈕點擊事件處理函數
def button_click(event):
    current_text = result_label.cget("text")
    button_text = event.widget.cget("text")
    if button_text == "=":
        try:
            result = eval(current_text)
            result_label.config(text=str(result))
        except Exception as e:
            result_label.config(text="Error")
    elif button_text == "C":
        result_label.config(text="0")
    else:
        if current_text == "0":
            result_label.config(text=button_text)
        else:
            result_label.config(text=current_text + button_text)

# 數字按鈕
buttons = [
    "7", "8", "9", "/",
    "4", "5", "6", "*",
    "1", "2", "3", "-",
    "0", ".", "=", "+"
]
row_num = 1
col_num = 0
for button_text in buttons:
    button = tk.Button(root, text=button_text, font=("Arial", 15))
    button.grid(row=row_num, column=col_num)
    button.bind("<Button-1>", button_click)
    col_num += 1
    if col_num > 3:
        col_num = 0
        row_num += 1

# 清除按鈕
clear_button = tk.Button(root, text="C", font=("Arial", 15))
clear_button.grid(row=row_num, column=col_num)
clear_button.bind("<Button-1>", button_click)

# 主事件循環
root.mainloop()

開場白:哈哈,看我這個計算器,小巧又強大!你可以在上面按數字、運算符,按等號就能得到結果,還能一鍵清除,就像個數學小能手,快來體驗一下吧!

代碼分析:

  1. 導入庫和創建主窗口
import tkinter as tk

root = tk.Tk()
root.title("Calculator")

導入Tkinter庫後,創建了主窗口,並設置標題為“Calculator”,這就是咱計算器的“外殼”啦。 2. 創建顯示結果的標籤

result_label = tk.Label(root, text="0", font=("Arial", 20))
result_label.grid(row=0, column=0, columnspan=4)

創建了一個標籤result_label來顯示計算結果,初始顯示為“0”,字體設置為Arial,大小20。然後用grid佈局把它放在第一行,跨越四列,這樣結果就能清晰顯示啦。 3. 按鈕點擊事件處理函數

def button_click(event):
    current_text = result_label.cget("text")
    button_text = event.widget.cget("text")
    if button_text == "=":
        try:
            result = eval(current_text)
            result_label.config(text=str(result))
        except Exception as e:
            result_label.config(text="Error")
    elif button_text == "C":
        result_label.config(text="0")
    else:
        if current_text == "0":
            result_label.config(text=button_text)
        else:
            result_label.config(text=current_text + button_text)

這個函數用來處理按鈕點擊事件。先獲取當前標籤顯示的文本current_text和點擊按鈕的文本button_text。如果是“=”按鈕,就用eval計算current_text的值,然後更新標籤顯示;如果是“C”按鈕,就把標籤文本設為“0”;其他情況就是把按鈕文本添加到當前文本後面,不過如果當前文本是“0”,就直接替換。 4. 創建數字按鈕

buttons = [
    "7", "8", "9", "/",
    "4", "5", "6", "*",
    "1", "2", "3", "-",
    "0", ".", "=", "+"
]
row_num = 1
col_num = 0
for button_text in buttons:
    button = tk.Button(root, text=button_text, font=("Arial", 15))
    button.grid(row=row_num, column=col_num)
    button.bind("<Button-1>", button_click)
    col_num += 1
    if col_num > 3:
        col_num = 0
        row_num += 1

創建了一個包含數字和運算符的列表buttons。然後循環創建每個按鈕,設置文本、字體,用grid佈局放置按鈕,還綁定了button_click事件。循環中處理了按鈕的佈局,每四列換行。 5. 創建清除按鈕

clear_button = tk.Button(root, text="C", font=("Arial", 15))
clear_button.grid(row=row_num, column=col_num)
clear_button.bind("<Button-1>", button_click)

創建了清除按鈕,放在最後一行,同樣綁定了button_click事件,點擊它就能清除結果啦。 6. 主事件循環

root.mainloop()

這是Tkinter程序的主循環,它會一直運行,監聽用户的操作,比如點擊按鈕等,然後根據事件執行相應的代碼。

項目知識點和目標:

  • 知識點:
  • Tkinter庫的基本操作,如創建窗口、標籤、按鈕等。
  • 佈局管理器grid的使用。
  • 按鈕點擊事件的綁定和處理。
  • eval函數的運用來計算表達式。
  • 異常處理。
  • 目標:
  • 成功創建一個具有基本計算功能的計算器界面。
  • 能夠實現數字和運算符的輸入、計算結果的顯示以及清除功能。
  • 能夠處理計算過程中的錯誤情況並顯示相應提示。

口語化總結:哇塞,通過這個實戰,我們做出了自己的計算器!在生活中,算賬、計算數據都更方便啦。在學習上,我們對Tkinter庫有了更深入的瞭解,掌握了界面編程的技巧。以後要是想做其他的小工具,也有了基礎呢,是不是很厲害呀!