如何在PySimpleGUI布局中添加显示区输出CANNY、FLANN图像比对结果
实现方案
你可以通过在布局中新增sg.Multiline控件作为专属结果输出区,同时把原有的单次读取窗口逻辑改为持久化事件循环,避免点击提交后窗口直接关闭,具体实现如下:
import PySimpleGUI as sg # 你已开发完成的CANNY+FLANN图像比对函数,此处为示例占位,直接替换成你的业务逻辑即可 def image_compare(file1_path, file2_path): result = f"比对完成\n文件1路径: {file1_path}\n文件2路径: {file2_path}\n匹配相似度: 89.2%\n匹配关键点数量: 124个" return result sg.theme('Light Blue 2') # 新增Multiline只读控件作为结果输出区 layout = [ [sg.Text('输入2个待比对的图片文件')], [sg.Text('文件1', size=(8, 1)), sg.Input(key='-FILE1-'), sg.FileBrowse(file_types=(("图片文件", "*.png *.jpg *.jpeg"),))], [sg.Text('文件2', size=(8, 1)), sg.Input(key='-FILE2-'), sg.FileBrowse(file_types=(("图片文件", "*.png *.jpg *.jpeg"),))], [sg.Submit('开始比对'), sg.Cancel('退出')], [sg.Text('比对结果:')], [sg.Multiline(size=(70, 15), key='-OUTPUT-', disabled=True, autoscroll=True)] ] window = sg.Window('图像比对工具', layout) # 事件循环保持窗口常驻 while True: event, values = window.read() if event in (sg.WIN_CLOSED, '退出'): break if event == '开始比对': file1 = values['-FILE1-'] file2 = values['-FILE2-'] if not file1 or not file2: window['-OUTPUT-'].update('请先选择两个待比对的图片文件!') continue # 调用比对逻辑并输出结果 compare_result = image_compare(file1, file2) window['-OUTPUT-'].update(compare_result) window.close()
关键修改说明
- 新增
key='-OUTPUT-'的sg.Multiline控件,设置disabled=True开启只读模式,专门用来输出比对结果,可通过调整size参数的宽高数值自定义输出区大小 - 给输入框、按钮都增加了自定义key,方便后续读取数值和控件操作
- 把原有单次读取窗口的逻辑改为持久化事件循环,点击提交后不会直接关闭窗口,执行比对逻辑后结果会直接渲染到输出区
内容的提问来源于stack exchange,提问作者ADS KUL
相关产品推荐
相关产品推荐

