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

Pygame_GUI容器滚动条越界问题求助

pygame_gui滚动容器越界问题解决与功能确认

功能支持确认

pygame_gui的UIScrollingContainer完全支持「存放组件+垂直滚动+自动生成滚动条」的需求,你的问题源于配置疏漏,而非库功能缺失。

问题原因

你的代码未明确告知容器内部内容的总高度,导致容器无法准确计算滚动边界,进而出现滚动到底部时的越界显示bug。

修复后的代码

import pygame
import pygame_gui

pygame.init()
window = pygame.display.set_mode((800, 600))
manager = pygame_gui.UIManager((800, 600))

container = pygame_gui.elements.UIScrollingContainer(
    relative_rect=pygame.Rect((50, 50), (300, 400)),
    manager=manager
)

# 添加子组件
item_count = 20
for i in range(item_count):
    pygame_gui.elements.UILabel(
        relative_rect=pygame.Rect((0, i * 35), (280, 30)),
        text=f"Item {i+1}",
        manager=manager,
        container=container
    )

# 关键:设置滚动区域的总尺寸,让容器知晓内部内容的实际高度
container.set_scrollable_area_dimensions((280, item_count * 35))

clock = pygame.time.Clock()
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()
        manager.process_events(event)

    manager.update(clock.tick(60)/1000.0)
    window.fill((128, 128, 128))
    manager.draw_ui(window)
    pygame.display.update()

核心修改说明

添加container.set_scrollable_area_dimensions((280, item_count * 35))一行:

  • 第一个参数是滚动区域的宽度,与子标签宽度保持一致(280px),避免内容被滚动条遮挡
  • 第二个参数是内部内容的总高度,这里是20个标签的垂直总占用空间(每个标签上下间距35px)

设置后容器会根据这个尺寸计算滚动边界,滚动时就不会出现越界问题,同时会在内容超出可视区域时自动显示垂直滚动条。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 17:53:29