如何在PySimpleGUI中将按钮放置在图片上方
在PySimpleGUI中实现图片上方叠加小按钮
当然可以实现!你要的就是把小按钮精准放在图片上方,类似标准Python里place()的定位效果,在PySimpleGUI里可以通过元素的location参数或者动态计算坐标来实现,下面给你两种可行的方案:
方案一:直接固定坐标定位
适合已知图片和窗口尺寸的场景,直接给按钮指定窗口内的坐标,让它覆盖在图片上:
import PySimpleGUI as sg # 统一背景色,避免出现突兀的底色 bg_color = 'white' # 布局:把图片和按钮放在同一Column容器里,按钮通过location定位 layout = [ [sg.Column([ [sg.Image(filename='image.png', key='-BG_IMAGE-', background_color=bg_color)], [sg.Button('点我', key='-TOP_BTN-', size=(8,2), # 这里的坐标是相对于窗口左上角的位置,根据你的图片尺寸调整 location=(60, 60), button_color=('#333', '#eee'))] ], background_color=bg_color)] ] # 创建窗口 window = sg.Window('图片叠按钮', layout, background_color=bg_color) # 事件循环 while True: event, values = window.read() if event == sg.WINDOW_CLOSED: break if event == '-TOP_BTN-': print('按钮触发啦!') window.close()
方案二:动态计算相对位置
如果图片尺寸不固定,或者你想让按钮相对于图片的某个位置偏移,可以先获取图片的位置和尺寸,再计算按钮的坐标:
import PySimpleGUI as sg bg_color = 'white' layout = [ [sg.Column([ [sg.Image(filename='image.png', key='-BG_IMAGE-', background_color=bg_color)], [sg.Button('点我', key='-TOP_BTN-', size=(8,2), button_color=('#333', '#eee'))] ], background_color=bg_color)] ] window = sg.Window('图片叠按钮', layout, background_color=bg_color) # 窗口加载后,获取图片的位置和尺寸 image_rect = window['-BG_IMAGE-'].get_bbox() # 计算按钮位置:图片左上角偏移50px btn_x = image_rect[0] + 50 btn_y = image_rect[1] + 50 # 更新按钮的位置 window['-TOP_BTN-'].set_location((btn_x, btn_y)) while True: event, values = window.read() if event == sg.WINDOW_CLOSED: break if event == '-TOP_BTN-': print('按钮触发啦!') window.close()
效果说明
运行代码后,会看到一张背景图片,小按钮悬浮在图片的指定位置,点击按钮能正常触发事件,和你想要的place()效果一致。
内容的提问来源于stack exchange,提问作者DIMM_V2
相关产品推荐
相关产品推荐

