在PySimpleGUI中,除了.update()方法外,window["-INPUT-"]等元素对象还支持以下属性和方法,按功能分类整理如下:
核心方法
-
.get()- 功能:获取元素的当前值(如输入框内容、下拉菜单选中项等)。
- 示例:
input_value = window["-INPUT-"].get()
-
.set_focus()- 功能:将焦点设置到该元素,使用户可以直接输入或操作。
- 示例:
window["-INPUT-"].set_focus()
-
.set_tooltip(tooltip_text)- 功能:动态设置元素的工具提示文本。
- 示例:
window["-INPUT-"].set_tooltip("请输入用户名")
-
.set_size(size=(width, height))- 功能:调整元素的尺寸(宽度和高度,单位为字符或像素)。
- 示例:
window["-INPUT-"].set_size((20, 1))
-
.expand(expand_x=True, expand_y=True)- 功能:使元素在水平或垂直方向扩展以填充可用空间。
- 示例:
window["-INPUT-"].expand(True, False)
-
.bind(bind_string, key_modifier)- 功能:绑定自定义事件(如键盘快捷键)。
- 示例:
window["-INPUT-"].bind("<Return>", "ENTER")
-
.unbind(bind_string)- 功能:解绑已绑定的事件。
- 示例:
window["-INPUT-"].unbind("<Return>")
-
.set_cursor(cursor_name)- 功能:设置元素的光标样式(如
"arrow"、"ibeam"等)。 - 示例:
window["-INPUT-"].set_cursor("ibeam")
- 功能:设置元素的光标样式(如
-
.hide_row()/.unhide_row()- 功能:隐藏或显示元素所在行的所有内容。
- 示例:
window["-INPUT-"].hide_row()
-
.visibility_changed()- 功能:处理元素可见性变化的事件(需配合
visible属性使用)。
- 功能:处理元素可见性变化的事件(需配合
关键属性
-
visible- 控制元素是否可见(
True/False)。 - 示例:
window["-INPUT-"].visible = False
- 控制元素是否可见(
-
disabled- 禁用或启用元素(
True为禁用,False为启用)。 - 示例:
window["-INPUT-"].disabled = True
- 禁用或启用元素(
-
size- 元素尺寸(宽度、高度),可通过
set_size()动态修改。 - 示例:
window["-INPUT-"].size = (30, 2)
- 元素尺寸(宽度、高度),可通过
-
font- 字体设置(如
("Arial", 12))。 - 示例:
window["-INPUT-"].font = ("微软雅黑", 14)
- 字体设置(如
-
background_color/text_color- 背景色和文本颜色(支持颜色名称或十六进制值)。
- 示例:
window["-INPUT-"].background_color = "#f0f0f0"
-
key- 元素的唯一标识符(用于事件处理和访问)。
- 示例:
window["-INPUT-"].key = "-INPUT-"
-
metadata- 存储任意用户数据(可附加到元素上)。
- 示例:
window["-INPUT-"].metadata = {"user_id": 123}
输入框专属方法
-
.set_cursor_to_end()- 将光标移动到输入框末尾。
- 示例:
window["-INPUT-"].set_cursor_to_end()
-
.select_text()- 选中输入框中的全部文本。
- 示例:
window["-INPUT-"].select_text()
-
.password_char- 设置密码隐藏字符(如
"*")。 - 示例:
window["-INPUT-"].password_char = "*"
- 设置密码隐藏字符(如
其他通用方法
-
.update(value=None, disabled=None, visible=None, ...)- 更新元素的多个属性(如值、禁用状态、可见性等)。
- 示例:
window["-INPUT-"].update("新内容", disabled=False)
-
.widget- 访问底层GUI框架的原生控件(如Tkinter的
Entry对象)。 - 示例:
tk_entry = window["-INPUT-"].widget
- 访问底层GUI框架的原生控件(如Tkinter的
使用场景示例
import PySimpleGUI as sglayout = [[sg.Input(key="-INPUT-", enable_events=True)],[sg.Button("获取值"), sg.Button("清空并禁用")]
]
window = sg.Window("示例", layout)while True:event, values = window.read()if event == sg.WIN_CLOSED:breakelif event == "获取值":print("当前值:", window["-INPUT-"].get())elif event == "清空并禁用":window["-INPUT-"].update("") # 清空内容window["-INPUT-"].disabled = True # 禁用输入window["-INPUT-"].set_tooltip("已禁用输入") # 更新提示
window.close()
通过组合这些方法和属性,可以实现动态交互、状态管理、界面响应等复杂功能。具体行为可能因PySimpleGUI版本略有差异,建议参考官方文档或使用sg.main_sdk_help()查看实时API。