如何在Tkinter计算器中消除空白,制作大尺寸=和.按钮
Tkinter计算器消除空白并制作大按钮方案
要实现你需要的效果,只需利用Tkinter grid布局的rowspan(跨行)和columnspan(跨列)属性,让指定按钮占据多个空白单元格即可,以下是修改后的完整代码:
import tkinter as tk def click(text): # 补充点击逻辑示例 if text == "C": entry.delete(0, tk.END) elif text == "<-": entry.delete(len(entry.get())-1, tk.END) else: entry.insert(tk.END, text) window = tk.Tk() window.title("Calculator") window.geometry("400x500") window.resizable(False, False) entry = tk.Entry(window, font=("Arial", 30)) entry.grid(row=0, column=0, columnspan=5, sticky="nsew") # 调整按钮列表,移除空白占位,重新规划布局 buttons = [ ("1", "2", "3", "C", "/"), ("4", "5", "6", "√", "*"), ("7", "8", "9", "<-", "+"), ("0", "(", ")", "-"), (".", "^", "=") ] for row_idx, row in enumerate(buttons): for col_idx, button_text in enumerate(row): if button_text == "=": # “=”按钮跨行2行,覆盖上方空白单元格 button = tk.Button(window, text=button_text, font=("Arial", 20), padx=3, pady=2, command=lambda text=button_text: click(text)) button.grid(row=4, column=4, rowspan=2, sticky="nsew") elif button_text == ".": # “.”按钮跨3列,覆盖左侧空白单元格 button = tk.Button(window, text=button_text, font=("Arial", 20), padx=3, pady=2, command=lambda text=button_text: click(text)) button.grid(row=5, column=0, columnspan=3, sticky="nsew") elif button_text == "^": # 单独放置“^”按钮在第5行第3列 button = tk.Button(window, text=button_text, font=("Arial", 20), padx=3, pady=2, command=lambda text=button_text: click(text)) button.grid(row=5, column=3, sticky="nsew") else: button = tk.Button(window, text=button_text, font=("Arial", 20), padx=3, pady=2, command=lambda text=button_text: click(text)) button.grid(row=row_idx+1, column=col_idx, sticky="nsew") # 保持列和行的权重设置,确保按钮自适应窗口 for i in range(5): window.grid_columnconfigure(i, weight=1) for i in range(6): window.grid_rowconfigure(i, weight=1) window.mainloop()
关键修改点:
- “=”按钮:通过
rowspan=2让它同时占据第4行和第5行的第4列,直接覆盖上方的空白区域 - “.”按钮:通过
columnspan=3让它占据第5行的第0、1、2列,消除左侧的空白区域 - 调整按钮列表结构,移除多余空白占位符,单独处理“^”按钮的位置,保证布局紧凑
- 保留
sticky="nsew"属性,确保按钮填满所在单元格
内容的提问来源于stack exchange,提问作者Eric
相关产品推荐
相关产品推荐

