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

