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

PySimpleGUI如何实现点击自定义图片按钮打开PDF文件

PySimpleGUI 点击自定义按钮打开PDF实现方法

核心逻辑是在事件循环捕获-PDF-按钮的点击事件,调用系统默认关联的PDF阅读器打开目标文件,全程用Python标准库实现,不需要额外安装依赖,兼容全平台。

修改点说明

  • 导入os、sys、subprocess三个标准库,用于跨平台唤起系统程序、校验文件存在性
  • 提前定义目标PDF的文件路径,支持中文路径、相对/绝对路径
  • 在事件循环中新增按钮点击分支,触发时先校验文件是否存在,存在就打开,不存在弹错误提示

完整修改后代码

import PySimpleGUI as sg
import os
import sys
import subprocess

# 替换为你的按钮base64图片资源
file_base64 = b'tem uma imagem aqui'
# 替换为实际要打开的PDF文件路径,打包后建议用相对路径
TARGET_PDF = "./参考资料.pdf"

def open_target_file(path):
    # 跨平台唤起默认程序打开文件
    if sys.platform == "win32":
        os.startfile(path)
    elif sys.platform == "darwin":
        subprocess.run(["open", path])
    else:
        subprocess.run(["xdg-open", path])

layout = [
    [sg.Text('Base64 Button Demo')],
    [sg.Button(
        '',
        image_data=file_base64,
        button_color=(sg.theme_background_color(), sg.theme_background_color()),
        border_width=0,
        key='-PDF-'
    )]
]

window = sg.Window('Flowers!', layout, no_titlebar=True)
while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED:
        break
    # 处理PDF按钮点击事件
    if event == '-PDF-':
        if os.path.exists(TARGET_PDF):
            open_target_file(TARGET_PDF)
        else:
            sg.popup_error(f"文件不存在,请检查路径:{TARGET_PDF}")
window.close()

使用提示

  • 如果是把软件打包发给学生用,把PDF文件和程序放在同一文件夹,TARGET_PDF直接写PDF文件名即可,不需要写复杂绝对路径
  • 打开PDF时会自动用用户电脑上默认设置的PDF阅读器打开,不需要额外内置阅读器或者指定程序路径
  • 加了文件存在校验,路径写错的时候会直接弹提示,不会出现点击按钮没反应的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 22:31:01