咨询PySimpleGUI窗口四角像素获取方法及PDF生成可行性
方案可行性与窗口四角坐标获取方法
方案可行性
完全可行。PySimpleGUI可以灵活构建符合报表需求的可视化界面,搭配截图工具(如PyAutoGUI、mss)和PDF生成库(如ReportLab、PyPDF2),就能实现将界面内容转为PDF报表的需求。
获取窗口四角像素坐标的方法
PySimpleGUI的窗口对象自带位置和尺寸属性,无需额外计算即可直接推导四角坐标:
- 左上角坐标:通过窗口对象的
CurrentLocation()方法获取,返回(x, y)元组 - 窗口尺寸:通过窗口对象的
Size属性获取,返回(width, height)元组 - 基于上述两个值,可直接计算另外三个角的坐标:
- 右上角:
(x + width, y) - 左下角:
(x, y + height) - 右下角:
(x + width, y + height)
- 右上角:
代码示例
import PySimpleGUI as sg # 构建示例报表界面 layout = [ [sg.Text("月度销售报表", font=("Arial", 16, "bold"))], [sg.Table(values=[["2024-01", "10000"], ["2024-02", "12000"], ["2024-03", "15000"]], headings=["月份", "销售额"], auto_size_columns=True)], [sg.Button("生成PDF")] ] # 初始化窗口并确保已渲染完成 window = sg.Window("报表预览", layout, finalize=True) while True: event, values = window.read() if event == sg.WIN_CLOSED: break if event == "生成PDF": # 获取窗口左上角坐标 x, y = window.CurrentLocation() # 获取窗口宽高 width, height = window.Size # 计算四角坐标 top_left = (x, y) top_right = (x + width, y) bottom_left = (x, y + height) bottom_right = (x + width, y + height) print("窗口四角像素坐标:") print(f"左上角: {top_left}") print(f"右上角: {top_right}") print(f"左下角: {bottom_left}") print(f"右下角: {bottom_right}") # 后续可添加截图转PDF的逻辑,例如用mss截图: # import mss # with mss.mss() as sct: # monitor = {"top": y, "left": x, "width": width, "height": height} # screenshot = sct.grab(monitor) # # 将截图保存为图片后,再用ReportLab等库转为PDF window.close()
注意事项
- 必须给窗口添加
finalize=True参数,确保窗口渲染完成后再获取坐标,否则会返回错误值 - 部分系统的窗口边框可能会影响坐标精度,但PySimpleGUI返回的坐标通常已包含窗口边框的实际位置,无需额外调整
内容的提问来源于stack exchange,提问作者rogsonl
相关产品推荐
相关产品推荐

