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
相关产品推荐
相关产品推荐

