You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 20:15:55