from tkinter import * from tkinter.messagebox import * # 系統彈窗消息 class Calculator: def __init__(self): # 構造函數,初始化GUI界面 # 先創建一個窗體 --self.frame self.frame = Tk() # 添加一個按鈕 self.Button_call = Button(self.frame, text="計算", command=self.get_result) self.Button_call.place(x=500, y=50) # 爲窗體增加標題 self.frame.title("計算圓的周長和麪積") # 指定窗體大小 根據像素 self.frame.geometry("800x650+450+300") # 不允許改變窗體大小 self.frame.resizable(0, 0) # 爲窗體指定背景 self.frame["bg"] = "lightgray" # 添加一個Label 標籤 self.Label_input = Label(self.frame, text="請輸入圓的半徑:", background="lightgray", foreground="blue", font=("微軟雅黑", 12, "bold")) self.Label_input.place(x=50, y=50) # 添加輸入的文本框 self.var_radius = StringVar() self.Entry_input = Entry(self.frame, textvariable=self.var_radius, font=("微軟雅黑", 12, "bold"), width=30) self.Entry_input.place(x=180, y=50) # 添加圓的周長Label self.Label_perimeter = Label(self.frame, text="圓的周長:", background="lightgray", foreground="blue", font=("微軟雅黑", 12, "bold")) self.Label_perimeter.place(x=100, y=110) self.var_perimeter = StringVar() self.Label_perimeter_result = Label(self.frame, textvariable=self.var_perimeter, text="圓的周長的結果", background="lightgray", foreground="blue", font=("微軟雅黑", 12, "bold")) self.Label_perimeter_result.place(x=200, y=110) # 添加圓的面積 Label self.Label_area = Label(self.frame, text="圓的面積:", background="lightgray", foreground="blue", font=("微軟雅黑", 12, "bold")) self.Label_area.place(x=100, y=150) self.var_area = StringVar() self.Label_area_result = Label(self.frame, textvariable=self.var_area, text="圓的面積的結果", background="lightgray", foreground="blue", font=("微軟雅黑", 12, "bold")) self.Label_area_result.place(x=200, y=150) def check_input(self, radius: str): """ 判斷一個字符是否爲數字 :param radius: 要判斷的字符串 :return:是數字,返回ture ; """ if radius.replace(".", "").isdigit(): return True # 計算元的周長和麪積 # circle_perimeter = 2 * PI * radius # circle_area = PI * radius * radius else: return False def get_perimeter(self, radius: float): """ 獲取圓的周長 :param radius: :return: """ PI = 3.1415926 circle_perimeter = 2 * PI * radius return circle_perimeter def get_area(self, radius: float): """ 獲取圓的面積 :param radius: :return: """ PI = 3.1415926 circle_area = PI * radius * radius return circle_area # 獲取計算的結果 def get_result(self): print("點擊了計算按鈕") # showinfo("系統消息", "") # 獲得文本框輸入的半徑 radius = self.var_radius.get() # 驗證半徑 if self.check_input(radius): # showinfo("系統消息", "半徑 符合要求") circle_perimeter = self.get_perimeter(float(radius)) circle_area = self.get_area(float(radius)) # 賦值 self.var_perimeter.set("%.2f" % circle_perimeter) self.var_area.set("%.2f" % circle_area) else: showinfo("系統消息", "半徑 不符合要求") # 顯示窗口 def show_a(self): self.frame.mainloop() if __name__ == "__main__": # 根據類實例化一個對象 this_gui = Calculator() # 展示窗體 this_gui.show_a() 輸出結果:
學習心得:
1.先創建窗體 self.frame = Tk()
2. 創建一個Label標籤(提示語)Label()
3.接着創建 Label 標籤後面的文本提示框 Stringvar() / Entry()
4. 創建一個按鈕Button() ,並將按鈕綁定到一個處理函數
5.輸出: 最後需要顯示窗口 self.frame.mainloop()