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

Tkinter选项卡中放置两个相邻文本框时首个文本框垂直滚动条消失

Tkinter选项卡多文本框滚动条消失问题解决方案

核心问题原因

  • 列索引分配不合理:第二个文本框位于column=2,对应的垂直滚动条不需要跳转到column=4,空出中间列反而会导致布局挤压
  • 未配置grid布局权重:grid默认不会根据窗口大小自动分配列/行的拉伸空间,未设置权重时控件拉伸会挤压相邻控件的显示空间
  • 第一个文本框sticky参数不全:第一个文本框仅设置了sticky="ns",仅能垂直方向自适应,宽度无法跟随单元格变化,容易和滚动条出现显示冲突

修正后代码

# 先配置tab2的网格布局权重,文本框列权重设为1自动拉伸,滚动条列权重设为0固定宽度
self.tab2.grid_columnconfigure(0, weight=1)
self.tab2.grid_columnconfigure(2, weight=1)
self.tab2.grid_rowconfigure(0, weight=1)

# 第一个文本框+滚动条
self.txtputthrough = tk.Text(self.tab2, height=25)
self.txtputthrough.grid(row=0, column=0, sticky="nsew")
self.vsb4 = ttk.Scrollbar(self.tab2, command=self.txtputthrough.yview, orient="vertical")
self.vsb4.grid(row=0, column=1, sticky="ns")
self.hsb4 = ttk.Scrollbar(self.tab2, command=self.txtputthrough.xview, orient="horizontal")
self.hsb4.grid(row=1, column=0, sticky="ew")
self.txtputthrough.configure(yscrollcommand=self.vsb4.set, xscrollcommand=self.hsb4.set)

# 第二个文本框+滚动条
self.txtputthrough2 = tk.Text(self.tab2, height=25)
self.txtputthrough2.grid(row=0, column=2, sticky="nsew")
self.vsb5 = ttk.Scrollbar(self.tab2, command=self.txtputthrough2.yview, orient="vertical")
self.vsb5.grid(row=0, column=3, sticky="ns")
self.hsb5 = ttk.Scrollbar(self.tab2, command=self.txtputthrough2.xview, orient="horizontal")
self.hsb5.grid(row=1, column=2, sticky="ew")
self.txtputthrough2.configure(yscrollcommand=self.vsb5.set, xscrollcommand=self.hsb5.set)

修改后两个文本框会平分选项卡的水平空间,各自的滚动条都可以正常显示,窗口拉伸时文本框会跟随自适应大小,不会出现滚动条被挤压消失的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:06:03