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

如何在Tkinter GUI中创建两个各占水平一半的Canvas元素?

实现Tkinter第三行双Canvas平分水平空间的方案

要实现第三行两个Canvas各占50%水平空间,核心是给对应的两列设置相同权重,同时配置第三行的拉伸属性,让Canvas能随窗口大小自适应。以下是完整实现代码:

from tkinter import *

root = Tk()
root.title("图片对比工具")

# 模拟第1、2行已有的元素(示例用Label)
Label(root, text="第1行元素", bg="#c0f0f0").grid(row=0, column=0, columnspan=2, sticky=NSEW, padx=5, pady=5)
Label(root, text="第2行元素", bg="#f0c0f0").grid(row=1, column=0, columnspan=2, sticky=NSEW, padx=5, pady=5)

# 配置第三行(row=2)的权重,让该行随窗口垂直拉伸
root.rowconfigure(2, weight=1)
# 配置两列权重相同,平分水平空间
root.columnconfigure(0, weight=1)
root.columnconfigure(1, weight=1)

# 创建两个Canvas,分别放在第三行的两列
canvas_left = Canvas(root, bg='#f0f0c0')
canvas_left.grid(row=2, column=0, sticky=N+S+E+W, padx=5, pady=5)

canvas_right = Canvas(root, bg='#c0c0f0')
canvas_right.grid(row=2, column=1, sticky=N+S+E+W, padx=5, pady=5)

root.mainloop()

关键说明:

  • 列权重配置:columnconfigure(0, weight=1)和columnconfigure(1, weight=1)让两列获得相同的拉伸优先级,窗口水平缩放时会各占50%空间。
  • 行权重配置:rowconfigure(2, weight=1)确保第三行在窗口垂直缩放时能自动拉伸,Canvas会填满该行的垂直空间。
  • sticky参数:sticky=N+S+E+W让Canvas完全填充所在的单元格,避免出现留白。
  • columnspan:前两行的元素用columnspan=2让它们横跨两列,保持布局统一。

内容的提问来源于stack exchange,提问作者peta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 06:41:30