sg.Multiline 和 sg.Output 有什么区别?怎么看起来一样?

news/2025/10/8 12:09:28/文章来源:https://www.cnblogs.com/nxhujiee/p/19129459

在PySimpleGUI中,sg.Multilinesg.Output 都是用于显示多行文本的组件,但它们的设计目的、默认行为和功能侧重有本质区别。以下是详细对比:

1. 核心定位

  • sg.Multiline
    本质是一个可编辑的多行文本框,用户可以直接输入、修改文本(类似<textarea>)。支持文本选择、复制粘贴、滚动等交互操作。常用于需要用户输入多行内容的场景(如填写备注、编辑代码)。

  • sg.Output
    本质是一个只读的输出区域,专门用于显示程序运行时的输出内容(如日志、调试信息、打印结果)。它模拟了终端/控制台的行为,默认禁止用户直接编辑内容。常用于将print()语句的输出重定向到GUI界面。

2. 默认行为差异

特性 sg.Multiline sg.Output
可编辑性 ✅ 用户可输入/修改 ❌ 只读(默认)
自动滚动 ❌ 需手动滚动 ✅ 输出内容超出区域时自动滚动到底部
换行处理 需显式设置wrap参数 默认自动换行(可配置)
系统输出重定向 不支持 支持(通过sg.Outputdo_not_redirect_stdout参数控制)

3. 功能扩展性

  • sg.Multiline
    支持更多文本编辑相关功能:

    • 设置占位符文本(placeholder
    • 密码模式(password_char
    • 文本验证(通过事件on_change
    • 自定义右键菜单
  • sg.Output
    聚焦输出场景的优化:

    • 自动捕获print(), sys.stdout的输出(需启用重定向)
    • 支持语法高亮(通过text_colorbackground_color模拟)
    • 内置时间戳、日志级别标记等扩展功能(需配合自定义代码)

4. 典型用例

  • 使用sg.Multiline的场景

    • 用户输入多行文本(如留言、代码编辑器)
    • 需要双向交互的文本区域(如聊天窗口输入框)
    • 需要验证或格式化输入的场景(如JSON编辑)
  • 使用sg.Output的场景

    • 显示程序日志、调试信息
    • 重定向print()输出到GUI
    • 展示实时流数据(如串口数据、网络日志)
    • 模拟终端/控制台行为

5. 代码示例对比

sg.Multiline 基础用法

import PySimpleGUI as sglayout = [[sg.Multiline("可编辑内容", key="-ML-", size=(40, 10))],[sg.Button("提交")]]
window = sg.Window("多行输入", layout)
while True:event, values = window.read()if event == sg.WINDOW_CLOSED:break# 获取输入内容text = values["-ML-"]print(f"用户输入: {text}")

sg.Output 基础用法

import PySimpleGUI as sg# 启用输出重定向(捕获print)
sg.theme("DarkBlue")
layout = [[sg.Output(size=(80, 20), key="-OUTPUT-")],[sg.Button("运行")]]
window = sg.Window("程序输出", layout)
while True:event, values = window.read()if event == sg.WINDOW_CLOSED:breakif event == "运行":print("任务开始...")for i in range(5):print(f"进度: {i*20}%")sg.EasyOverlap()  # 模拟耗时操作print("任务完成!")

6. 为什么看起来相似?

  • 视觉表现:两者默认都是白色背景、黑色文本的单色界面(可通过background_colortext_color修改)。
  • 布局行为:在布局中占用矩形区域,支持滚动条(需显式添加)。
  • 继承关系sg.Output内部基于sg.Multiline实现,但封装了只读、自动滚动等特性。

总结

  • Multiline:需要用户输入或修改多行文本时。
  • Output:需要显示程序输出(如日志、打印信息)时,尤其需要自动滚动和终端模拟功能时。

如果需要同时具备输入和输出功能(如聊天窗口),可组合使用两者:

layout = [[sg.Output(size=(80, 20), key="-OUTPUT-")],  # 输出区域[sg.Multiline(size=(70, 3), key="-INPUT-"), sg.Button("发送")]
]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/931490.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中科微GNSS卫星定位产品

中科微GNSS系列 AT6668 支持固件升级/命令保存 支持多种卫星导航系统: BDS: B1C/ B1I GPS/QZSS: L1 GALILEO: E1 GLONASS: R1 AT6558 支持固件升级/命令保存 支持多种卫星导航系统: BDS: B1I GPS/QZSS: L1 GLO…

算法设计与分析第一章作业

我所理解的代码编写规范是: 1.命名规范: 1)不使用$,利用下划线、数字和大小写英文字母命名,这是根本原则。 2)在写代码,如函数及变量时: (1)类java:小驼峰命名法,首字母需小写,后续单词首字母大写。 (2)…

Syncfusion重构Essential Studio套件,为开发者提供更灵活选择

Syncfusion宣布对其Essential Studio产品线进行重大重组,将原有套件拆分为多个独立解决方案,包括UI组件、文档处理SDK和专用编辑器等,同时新增AI驱动的Blazor功能。Syncfusion重构Essential Studio套件,为开发者提…

运城建网站上海集团网站建设价格

题目描述 给你一个 32 位的有符号整数 x​ &#xff0c;返回将 x​ 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1]​ &#xff0c;就返回 0。 假设环境不允许存储 64 位整数&#xff08;有符号或无符号&#xff09;。 示例 …

vmware workstation17pro安装vmtools

1️⃣ 下载 VMware Tools ISO 官方链接: https://packages-prod.broadcom.com/tools/frozen/linux/linux.iso 这是最新 VMware Tools Linux ISO(适用于所有 Linux 客户机) 下载后,你可以挂载到虚拟机的光驱: VM →…

2025 年逸发粘接认证推荐:依托德系标准与全链条服务,打造粘接及复材技术解决方案优质选择

在制造业高质量发展进程中,粘接及复合材料技术的应用愈发广泛,但其质量管控与标准化建设成为行业痛点。当前市场存在标准执行不统一、专业人才匮乏、检测体系不完善等问题,导致航空、轨道交通等关键领域的粘接结构存…

ZR 2025 十一集训 Day 8

100 + 100 + 20 + 100 = 320, Rank 3/13.今年打的 NOIP 模拟赛中第一次简单场(确信25十一集训day3 链接:link 题解:题目内 时间:4.5h (2025.10.03 07:20~11:50) 题目数:4 难度:A B C D\(\color{#F39C11} 橙\) \(…

Prj09--8088单板机C语言8253产生1KHz方波(1) - 详解

Prj09--8088单板机C语言8253产生1KHz方波(1) - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&qu…

2025 年杭州画室推荐:之江画室凭央清班十年口碑、突出设计学录取案例及特色教学空间脱颖而出

近年来,美术高考竞争愈发激烈,考生和家长对画室的选择愈发谨慎。杭州作为国内美术培训的重要阵地,汇聚了众多画室,市场呈现出良莠不齐的态势。部分画室存在教学体系不完善、师资力量薄弱、缺乏针对性培养方案等问题…

2025 云南旅游旅行社最新推荐排行榜:权威口碑榜单助你避开消费陷阱选靠谱服务商

云南以多元民族文化与瑰丽自然景观成为旅游热门地,但市场上旅行社质量参差不齐,隐性消费、行程缩水、服务缺位等问题频发。有游客遭遇 “低价纯玩团” 变购物团,旺季景点排队超 3 小时,住宿与宣传严重不符,甚至因…

自然村 网站建设安徽省建设局网站

代码随想录图论 第三天 | 130. 被围绕的区域 417. 太平洋大西洋水流问题 一、130. 被围绕的区域 题目链接&#xff1a;https://leetcode.cn/problems/surrounded-regions/ 思路&#xff1a;题目要求沾边的不动&#xff0c;只改没沾边的&#xff0c;那么可以先dfs遍历4条边&am…

DeepSeek+SpringAI完成流式对话

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025 系统门窗最新推荐排行榜:7 大品牌隔音节能实力解析,家装工装选购指南

2025 年建筑行业 “双碳” 目标深化推进,系统门窗作为节能核心部件,市场需求持续攀升,但行业乱象却让消费者与采购方陷入选择困境。品牌数量超数千家,部分企业以回收铝冒充原生铝、简化密封结构,导致隔音隔热性能…

关于h5的网站网站建设背景及意义

“要求&#xff1a;数据赋能实施部门能力”是作为标准的参考内容编写的。 在实施数据赋能中&#xff0c;数据赋能实施部门的能力体现在多个方面&#xff0c;关键能力如下图所示。 在实施数据赋能的过程中&#xff0c;数据赋能实施部门应具备的关键能力如下。 理性思维与逻辑分…

专业做包装设计网站cuntlove wordpress

更新内容 更新 SmartX 超融合在证券行业的覆盖范围、部署规模与应用场景。新增操作系统信创转型、Nutanix 国产化替代、网络与安全等场景实践。更多超融合金融核心生产业务场景实践&#xff0c;欢迎阅读文末电子书。 在金融行业如火如荼的数字化转型大潮中&#xff0c;传统架…

网站为什么要维护网站站群

全屏setID(String ID)方法被用于设置时区ID。这不会改变的时区对象中的任何其他数据。声明以下是java.util.TimeZone.setID()方法的声明。public void setID(String ID)参数ID--这是新的时区ID。返回值NA异常NA例子下面的例子显示java.util.TimeZone.setID()方法的使用package …

Rocky9系统Grub修复实验

一、准备环境 1.将/boot目录下的文件进行清理,使用mv命令移动 mkdir /boot-bak #创建备份文件夹 mv /boot/* /boot-bak/ #将/boot目录下的文件全部移动到/book-bat下 reboot #重启2.重启后发现开不了机,如图二、故…

2025 年冷水机厂家最新推荐排行榜:聚焦实力企业,解读技术服务优势与选购指南防爆/低温/水冷/螺杆/超低温冷水机厂家推荐

在新能源、医药化工、电子制造等核心产业中,冷水机作为温控核心设备,直接决定生产效率与产品品质。但当前市场品牌鱼龙混杂,部分产品存在型号单一、能耗偏高、温控精度不足等问题,且售后服务响应滞后,设备故障易导…

2025 钢丝绳厂家最新推荐榜:行业标杆与新锐势力深度解析,5 大优质品牌适配场景全指南

在工业生产、工程建设等核心领域,钢丝绳作为承重牵引关键部件,其质量直接决定作业安全与项目效率。当前市场呈现 “两极分化”:传统品牌技术成熟但创新不足,新兴品牌迭代迅速却资质参差,部分产品存在强度不足、防…