You need to enable JavaScript to run this app. 如何在PySimpleGUI布局中添加显示区输出CANNY、FLANN图像比对结果
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 04:06:07