pysimplegui 显示图片

时间: 2023-09-18 13:12:30 浏览: 21
使用 PySimpleGUI 显示图片可以通过 `sg.Image` 来实现。具体步骤如下: 1. 导入 PySimpleGUI 库: ```python import PySimpleGUI as sg ``` 2. 定义窗口布局,添加一个 `sg.Image` 控件: ```python layout = [[sg.Image(key="-IMAGE-")], [sg.Button("打开图片")]] ``` 3. 创建窗口: ```python window = sg.Window("显示图片", layout) ``` 4. 加载图片并更新 `sg.Image` 控件的值: ```python filename = sg.popup_get_file("请选择要打开的图片", title="打开图片") if filename: image = sg.Image(filename=filename) window["-IMAGE-"].update(data=image.read()) ``` 完整代码如下: ```python import PySimpleGUI as sg layout = [[sg.Image(key="-IMAGE-")], [sg.Button("打开图片")]] window = sg.Window("显示图片", layout) while True: event, values = window.read() if event == sg.WINDOW_CLOSED: break elif event == "打开图片": filename = sg.popup_get_file("请选择要打开的图片", title="打开图片") if filename: image = sg.Image(filename=filename) window["-IMAGE-"].update(data=image.read()) window.close() ``` 在上述代码中,我们通过 `sg.popup_get_file` 打开文件选择对话框,让用户选择要打开的图片。然后,我们使用 `sg.Image` 控件加载图片并更新 `sg.Image` 控件的值。最后,在窗口关闭前,我们需要调用 `window.close()` 来关闭窗口。

相关推荐

好的,这是两个不同的需求,您需要针对不同的选择显示不同的内容。您可以使用 PySimpleGUI 的元素来实现。 对于选择表格,您可以使用 Table 元素来显示表格内容。当用户选择表格中的一行时,您可以使用回调函数来获取所选行的数据,并在界面上显示相关的信息。 对于选择图片,您可以使用 FileBrowse 元素来让用户选择图片文件。当用户选择图片后,您可以使用 Image 元素来显示图片内容。 以下是一个简单的示例代码,演示了如何实现这两个功能: python import PySimpleGUI as sg # 表格数据 data = [ ['John', 'Doe', 30], ['Jane', 'Doe', 25], ['Bob', 'Smith', 45], ] # 图片预览大小 IMAGE_SIZE = (200, 200) # 界面布局 layout = [ [sg.Text('请选择:')], [sg.Table(values=data, headings=['First Name', 'Last Name', 'Age'], key='-TABLE-', enable_events=True)], [sg.FileBrowse('选择图片文件', key='-FILE-', file_types=(('JPEG Files', '*.jpg'), ('PNG Files', '*.png')))], [sg.Image(key='-IMAGE-', size=IMAGE_SIZE)], ] # 创建窗口 window = sg.Window('选择表格或图片', layout) # 事件循环 while True: event, values = window.read() if event == sg.WINDOW_CLOSED: break elif event == '-TABLE-': row = values['-TABLE-'][0] sg.popup(f'您选择了表格中的第 {row+1} 行') elif event == '-FILE-': filename = values['-FILE-'] if filename: window['-IMAGE-'].update(filename=filename) # 关闭窗口 window.close() 在这个示例中,我们使用了 Table 元素来显示表格内容,并使用 enable_events=True 让它支持事件。当用户选择表格中的一行时,我们在回调函数中获取所选行的数据,并使用 popup 函数在界面上显示相关的信息。 另外,我们还使用了 FileBrowse 元素来让用户选择图片文件,并使用 Image 元素来显示图片内容。当用户选择图片后,我们使用 update 方法更新 Image 元素的内容。
### 回答1: pysimplegui是一个Python GUI库,可以用来创建各种类型的用户界面。其中包括table表格,可以用来展示和编辑数据。使用pysimplegui创建table表格非常简单,只需要定义表格的列和行,然后将数据填充到表格中即可。同时,pysimplegui还提供了丰富的样式和事件处理功能,可以满足不同的需求。 ### 回答2: pysimplegui是一种Python GUI应用程序编程库,它可以帮助开发人员快速创建图形用户界面(GUI)应用程序。其中的table表格是一种非常常用的组件,可以用于显示数据和编辑数据。下面将详细介绍pysimplegui中的table表格的使用方法。 pysimplegui中的table表格是一个多行多列的控件,可以用于显示数据和编辑数据。默认情况下,它包含一个标题行和一个或多个数据行。表格的每个单元格可以包含文本、数字、图像等内容。在表格中编辑数据时,可以通过键盘或鼠标进行编辑和选择操作。 在使用pysimplegui中的table表格时,我们需要首先导入pysimplegui库并创建一个GUI窗口。然后,我们可以使用sg.Table()函数来创建一个table表格。该函数需要传递一个二维列表作为表格数据源,以及一些参数来控制表格的行列数、标题等属性。例如: python import PySimpleGUI as sg data = [ ['John', 'Doe', 25], ['Jane', 'Doe', 23], ['Jim', 'Smith', 32], ['Bob', 'Brown', 45] ] layout = [ [sg.Table(values=data, headings=['First Name', 'Last Name', 'Age'], max_col_width=25, auto_size_columns=True, justification='center', num_rows=10, alternating_row_color='lightblue')], ] window = sg.Window('My Table Example', layout, grab_anywhere=False) while True: event, values = window.read() if event == sg.WINDOW_CLOSED: break window.close() 在上面的示例代码中,我们创建了一个包含4行3列数据的table表格。其中,values参数用于指定表格数据源,headings参数用于指定表格的列标题,max_col_width参数控制每列的最大宽度,auto_size_columns参数则自动调整列宽以适应窗口大小,justification参数控制表格的对齐方式,num_rows参数则指定表格中显示的最大行数,alternating_row_color参数用于交替显示行的颜色。 此外,在pysimplegui中的table表格中,还可以添加单元格编辑事件和表格右键菜单等功能。例如,我们可以在上面的代码中添加以下代码来为表格添加单元格编辑事件: python def on_cell_change(event): current_value = event.table[event.row][event.column] table_data[event.row][event.column] = current_value table = sg.Table(values=data, headings=['First Name','Last Name','Age'], max_col_width=25, auto_size_columns=True, justification='center', num_rows=10, alternating_row_color='lightblue') table.bind('<Motion>', '_Table__on_motion') table.bind('<Button-1>', '_Table__on_left_button_press') table.bind('<ButtonRelease-1>', '_Table__on_left_button_release') table.bind('<Button-3>', '_Table__on_right_button_press') table.bind('<Button-2>', '_Table__on_middle_button_press') table.bind('<Key>', '_Table__on_key_press') table.bind('<Return>', '_Table__on_return_press') table.bind('<BackSpace>', '_Table__on_backspace_press') table.bind('<Delete>', '_Table__on_delete_press') table.bind('<FocusIn>', '_Table__on_focus_in') table.bind('<FocusOut>', '_Table__on_focus_out') table.bind('<Configure>', '_Table__on_resize') table.bind('<MouseWheel>', '_Table__on_mousewheel') table.bind('<B1-Motion>', '_Table__on_left_button_motion') table.bind('<>', on_cell_change) 在以上代码中,我们定义了一个on_cell_change()函数,该函数会在表格的单元格被编辑时执行。这个函数将当前单元格的值更新到数据源中。然后,我们使用table.bind()函数将该函数绑定到表格的<>事件上,以实现单元格编辑的功能。 综上所述,pysimplegui中的table表格是一个功能强大、易于使用的数据展示和编辑控件。在实际开发中,我们可以通过对其进行定制来实现各种复杂的需求。 ### 回答3: PySimpleGUI是一款基于Tkinter封装的Python GUI库,非常易于学习和使用。PySimpleGUI的table表格功能可以用于展示和编辑二维表格数据,支持多种数据类型,支持排序、筛选、分页等功能,使用非常方便。 在PySimpleGUI中创建table表格非常简单,只需要构建一个二维列表数据,然后在布局中添加一个sg.Table()对象即可。例如: import PySimpleGUI as sg data = [[f'row {k}, col {i}' for i in range(3)] for k in range(10)] layout = [[sg.Table(values=data, headings=['Column 1', 'Column 2', 'Column 3'], auto_size_columns=True, display_row_numbers=True, justification='right', num_rows=min(25, len(data)))], [sg.Button('OK')]] window = sg.Window('Table', layout) while True: event, values = window.read() if event == sg.WINDOW_CLOSED or event == 'OK': break window.close() 在这个例子中,我们生成了一个包含10行3列的二维列表数据,并创建了一个sg.Table()对象来展示这些数据。Table()对象接收的参数包括values表示二维列表数据、headings表示表头、auto_size_columns表示自动调整列宽、display_row_numbers表示显示行号、justification表示对齐方式、num_rows表示显示行数等等。最终,我们在窗口中添加了一个OK按钮,并通过window.read()方法监听事件。 当我们运行这个程序时,就会弹出一个包含10行3列的表格窗口,用户可以通过滚动、排序、筛选等方式对数据进行查看和编辑。如果想要修改数据,只需要通过二维列表的索引进行操作即可。 除了上面提到的基本功能外,PySimpleGUI的table表格还支持更多高级功能,例如: 1.设置单元格的格式和颜色; 2.处理单元格的选择和事件响应; 3.嵌入图标、图片、按钮等控件; 4.支持多级表头、树形结构等数据结构。 总之,PySimpleGUI的table表格非常强大,可以应用于各种数据展示和编辑场景,是Python GUI编程的一个很好选择。
这是一个基于PySimpleGUI版本4.60.4的图片查看器,该程序使用了右侧滚动条功能,允许用户轻松浏览并查看多张图片。 python import PySimpleGUI as sg import os # 获取文件目录下所有图片文件的路径 def get_img_filenames(directory): # 支持的图片格式列表 img_ext = (".gif", ".ico", ".jpeg", ".jpg", ".png", ".bmp") # 获取目录下所有文件的路径 all_files = os.listdir(directory) # 过滤出图片文件的路径 img_files = [os.path.join(directory, filename) for filename in all_files if filename.lower().endswith(img_ext)] return img_files # 构建GUI界面 def build_gui(directory): # 获取图片文件的路径列表 img_files = get_img_filenames(directory) # 定义滚动条和图片组件 scrollbar = sg.Scroll(vertical_only=True) image_viewer = sg.Graph(canvas_size=(800, 600), graph_bottom_left=(0, 0), graph_top_right=(800, 600), key='-IMAGE_VIEWER-') # 定义布局 layout = [ [ sg.Column([ [scrollbar], ], size=(30, 600)), sg.Column([ [image_viewer], ], size=(800, 600)), ] ] # 创建窗体并设定标题 window = sg.Window('图片查看器', layout) # 边读边显示图片 for i, img_file in enumerate(img_files): # 尝试打开当前图片文件 try: image_viewer.draw_image(filename=img_file, location=(0, 600 * i)) # 如果当前文件无法打开,则跳过 except Exception as e: print(f"Error: file={img_file}, exception={str(e)}") # 循环读取事件 while True: event, values = window.read() # 点击窗口关闭按钮或者按下ESC键,程序将关闭窗口和退出程序 if event == sg.WINDOW_CLOSED or event == 'Cancel' or event == 'Escape:27': break # 退出程序 window.close() # 测试程序 if __name__ == '__main__': build_gui('./images/') # 显示图片目录 使用说明: 1. 将上述代码保存为.py文件; 2. 修改代码最后一行的参数为你的图片目录; 3. 执行该.py文件,即可打开图片查看器,并显示指定目录下的所有图片。
sg.FileBrowse() 是 PySimpleGUI 中的一个文件浏览器控件,它提供了一些可选的参数,可以用于自定义控件的外观和行为。 下面是 sg.FileBrowse() 可选参数的介绍: - button_text:用于指定浏览文件按钮上显示的文本。默认是 "浏览"。 - size:用于指定控件的尺寸。默认是 (None, None),即自适应大小。可以指定为一个二元组,例如 (100, 50)。 - file_types:用于指定要显示哪些类型的文件。可以指定为一个列表,每个元素是一个二元组,包含文件类型的描述和文件类型的通配符,例如 [("图片文件", "*.jpg;*.png"), ("所有文件", "*.*")]。默认显示所有文件。 - initial_folder:用于指定初始文件夹的路径。默认是当前工作目录。 - message:用于指定在浏览文件对话框中显示的消息。默认是 "请选择文件"。 - no_window:用于指定是否在选择文件时显示文件对话框。默认是 False,即显示文件对话框。如果设置为 True,则不会显示文件对话框,而是直接返回初始文件夹中的所有文件列表。 - modal:用于指定是否将浏览文件对话框显示为模态对话框。默认是 True,即显示为模态对话框,禁止用户与其他窗口交互。如果设置为 False,则显示为非模态对话框,允许用户与其他窗口交互。 以上就是 sg.FileBrowse() 的可选参数介绍,你可以根据需要进行自定义配置,以满足你的应用需求。

最新推荐

基于单片机温度控制系统设计--大学毕业论文.doc

基于单片机温度控制系统设计--大学毕业论文.doc

"REGISTOR:SSD内部非结构化数据处理平台"

REGISTOR:SSD存储裴舒怡,杨静,杨青,罗德岛大学,深圳市大普微电子有限公司。公司本文介绍了一个用于在存储器内部进行规则表达的平台REGISTOR。Registor的主要思想是在存储大型数据集的存储中加速正则表达式(regex)搜索,消除I/O瓶颈问题。在闪存SSD内部设计并增强了一个用于regex搜索的特殊硬件引擎,该引擎在从NAND闪存到主机的数据传输期间动态处理数据为了使regex搜索的速度与现代SSD的内部总线速度相匹配,在Registor硬件中设计了一种深度流水线结构,该结构由文件语义提取器、匹配候选查找器、regex匹配单元(REMU)和结果组织器组成。此外,流水线的每个阶段使得可能使用最大等位性。为了使Registor易于被高级应用程序使用,我们在Linux中开发了一组API和库,允许Registor通过有效地将单独的数据块重组为文件来处理SSD中的文件Registor的工作原

如何使用Promise.all()方法?

Promise.all()方法可以将多个Promise实例包装成一个新的Promise实例,当所有的Promise实例都成功时,返回的是一个结果数组,当其中一个Promise实例失败时,返回的是该Promise实例的错误信息。使用Promise.all()方法可以方便地处理多个异步操作的结果。 以下是使用Promise.all()方法的示例代码: ```javascript const promise1 = Promise.resolve(1); const promise2 = Promise.resolve(2); const promise3 = Promise.resolve(3)

android studio设置文档

android studio默认设置文档

海量3D模型的自适应传输

为了获得的目的图卢兹大学博士学位发布人:图卢兹国立理工学院(图卢兹INP)学科或专业:计算机与电信提交人和支持人:M. 托马斯·福吉奥尼2019年11月29日星期五标题:海量3D模型的自适应传输博士学校:图卢兹数学、计算机科学、电信(MITT)研究单位:图卢兹计算机科学研究所(IRIT)论文主任:M. 文森特·查维拉特M.阿克塞尔·卡里尔报告员:M. GWendal Simon,大西洋IMTSIDONIE CHRISTOPHE女士,国家地理研究所评审团成员:M. MAARTEN WIJNANTS,哈塞尔大学,校长M. AXEL CARLIER,图卢兹INP,成员M. GILLES GESQUIERE,里昂第二大学,成员Géraldine Morin女士,图卢兹INP,成员M. VINCENT CHARVILLAT,图卢兹INP,成员M. Wei Tsang Ooi,新加坡国立大学,研究员基于HTTP的动态自适应3D流媒体2019年11月29日星期五,图卢兹INP授予图卢兹大学博士学位,由ThomasForgione发表并答辩Gilles Gesquière�

MutableDenseMatrix' object has no attribute 'flatten'

根据提供的引用内容,可以看出这是一个关于Python中矩阵操作的问题。具体来说,'MutableDenseMatrix' object has no attribute 'flatten'的错误提示表明,矩阵对象没有名为'flatten'的属性。因此,我们需要使用其他方法来展平该矩阵对象。 以下是一种可能的解决方案: ```python # 导入必要的库 from sympy import Matrix # 创建一个矩阵对象 mat = Matrix([[1, 2], [3, 4]]) # 将矩阵对象转换为列表 mat_list = mat.tolist() # 将列表展平 flat

MySQL 75道面试题及答案.docx

MySQL 75道面试题及答案.docx

HAL多学科开放获取档案库的作用及代理重加密和认证委托的研究

0HAL编号:tel-038172580https://theses.hal.science/tel-038172580提交日期:2022年10月17日0HAL是一个多学科开放获取档案库,用于存储和传播科学研究文档,无论其是否发表。这些文档可以来自法国或国外的教育和研究机构,也可以来自公共或私人研究中心。0HAL多学科开放获取档案库旨在存储和传播法国或国外的教育和研究机构、公共或私人实验室发表或未发表的研究文档。0代理重加密和认证委托的贡献0Anass Sbai0引用此版本:0Anass Sbai. 代理重加密和认证委托的贡献. 离散数学[cs.DM]. 皮卡第朱尔大学, 2021. 法语. �NNT:2021AMIE0032�. �tel-03817258�0博士学位论文0专业“计算机科学”0提交给科技与健康学院博士学位学校0皮卡第朱尔大学0由0Anass SBAI0获得皮卡第朱尔大学博士学位0代理重加密和认证委托的贡献0于2021年7月5日,在评审人的意见后,面向考试委员会进行

已有一个已排好序的数组,要求输入一个数后,按原来的排序规律将它插入数组中

已有一个已排好序的数组,要求输入一个数后,按原来的排序规律将它插入数组中,可以使用二分查找的方法来提高查找效率。具体实现如下: ```python def insert_num(arr, num): left = 0 right = len(arr) - 1 while left <= right: mid = (left + right) // 2 if arr[mid] == num: arr.insert(mid, num) return arr elif arr[m

基于单片机的语音门铃设计毕业论文.doc

基于单片机的语音门铃设计毕业论文.doc