|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
求搭救,代码如下:
- import PySimpleGUI as sg
- import base64
- f=open(r'C:\Users\Administrator\Desktop\测试4\3.png','rb')
- #读取内容转换为base64编码
- is_f=base64.b64decode(f.read())
- f.close()
- layout=[[sg.B(image_data=is_f,key='-OK-')]]
- window=sg.Window('按钮图形',layout,keep_on_top=True)
- while True:
- event,values=window.read()
- print(event)
- if event==None:
- break
- window.close()
复制代码
报错提示:Button element error couldn't recognize image data
在你的代码中,问题出现在图像数据转换的部分。PySimpleGUI 中的 Image 和 Button 元素可以接受 base64 编码的数据,但它们实际上需要的是 base64 编码的 **字符串**,而不是通过 base64.b64decode() 得到的字节数据。在你的代码中,你试图将一个解码的 base64 数据直接传递给 Button 元素,这导致了错误。
此外,你应该使用 base64.b64encode() 而不是 base64.b64decode() ,因为 b64encode() 会将二进制数据编码为 base64 数据,而 b64decode() 是将 base64 数据解码为二进制数据。
下面是修复后的代码:
- import PySimpleGUI as sg
- import base64
- # 读取文件并进行 base64 编码
- with open(r'C:\Users\Administrator\Desktop\测试4\3.png', 'rb') as f:
- is_f = base64.b64encode(f.read()).decode('utf-8')
- layout = [[sg.Button(image_data=is_f, key='-OK-')]]
- window = sg.Window('按钮图形', layout, keep_on_top=True)
- while True:
- event, values = window.read()
- print(event)
- if event == None:
- break
- window.close()
复制代码
在此修复的代码中,我们使用 with open... 结构来读取文件,这是一种更安全的方式,可以确保文件在读取后被正确地关闭。另外,我们使用 base64.b64encode() 对文件内容进行 base64 编码,然后使用 .decode('utf-8') 将字节编码转换为字符串编码,以满足 PySimpleGUI 的需求。
|
|