PySimpleGUI - Input 输入元素
Input 输入元素种类的小部件在任何 GUI 工具包中都是最受欢迎的。 Input 元素基于 TKinter 中的 Entry 小部件。 这个类的对象给出了一个单行的输入文本域。
除了通用属性外,Input元素特有的属性如下 −
序号 | 属性 & 描述 |
---|---|
1 | default_text 最初显示在输入框中的文本作为默认值 |
2 | disabled 为元素设置禁用状态 |
3 | use_readonly_for_disable 如果 True(默认)tkinter 状态设置为"只读"。 否则状态设置为"禁用" |
4 | password_char 如果这是一个密码字段,则为密码字符 |
Input 类定义了返回用户输入文本的 get() 方法。 update() 方法更改输入元素的一些设置。 定义了以下属性:
序号 | 属性 & 描述 |
---|---|
1 | value 在输入字段中显示为默认文本的新文本 |
2 | disabled 元素的禁用或启用状态 |
3 | select 如果为True,则文本将被选中 |
4 | visible 改变元素的可见性 |
5 | move_cursor_to 将光标移动到特定的偏移量。 默认为"end" |
6 | password_char 如果这是一个密码字段,则为密码字符 |
7 | paste 如果为 True,则将值"粘贴"到元素中而不是替换整个元素。 如果选择了任何内容,它将被替换。 文本插入到当前光标位置。 |
在下面给出的示例中,窗口有一个 Input 元素来接受用户输入。 它被设计为只接受数字。 如果按下任何非数字键,则会弹出一条消息,通知您不允许这样做。 为此,将输入的最后一个字符与由数字字符组成的字符串进行比较。 如果最后按下的键不是数字,则将其从输入框中删除。
import PySimpleGUI as psg l1 = psg.Text('Type here', key='-OUT-', font=('Arial Bold', 20), expand_x=True, justification='center') t1 = psg.Input('', enable_events=True, key='-INPUT-', font=('Arial Bold', 20), expand_x=True, justification='left') b1 = psg.Button('Ok', key='-OK-', font=('Arial Bold', 20)) b2 = psg.Button('Exit', font=('Arial Bold', 20)) layout = [[l1], [t1], [b1, b2]] window = psg.Window('Input Demo', layout, size=(750, 150)) while True: event, values = window.read() print(event, values) if event == '-INPUT-': if values['-INPUT-'][-1] not in ('0123456789'): psg.popup("Only digits allowed") window['-INPUT-'].update(values['-INPUT-'][:-1]) if event == psg.WIN_CLOSED or event == 'Exit': break window.close()
它将产生以下输出窗口 −
多行元素
如果您希望输入包含多行的文本,您可以使用 Multiline 元素而不是 Input 元素。 事实上,它被用作输入和输出元素。 如果文本的长度大于输入/显示的文本的高度/宽度,则滚动条出现在元素中。
以下属性特定于多行元素 −
序号 | 属性 & 描述 |
---|---|
1 | default_text 要显示的初始文本 |
2 | autoscroll 如果为 True,元素的内容将随着更多数据添加到末尾而自动滚动 |
3 | auto_size_text 如果 True(默认)tkinter 状态设置为"只读"。 否则状态设置为"已禁用" |
4 | horizontal_scroll 控制是否应该显示水平滚动条。 如果为 True,除了垂直滚动条之外,还将显示水平滚动条 |
5 | reroute_stdout 如果为True,那么所有到stdout的输出都会输出到这个元素 |
6 | reroute_cprint 如果为 True,您的 cprint 调用将输出到此元素。 |
7 | no_scrollbar 如果为 False,则显示垂直滚动条(默认) |
与 Input 元素一样,Multiline 类也有一个 get() 方法来检索其文本内容。 Update() 方法更改此元素的某些属性的值。 例如 −
value − 要显示的新文本
append − 如果为 True,则新值将添加到当前值的末尾。 如果为 False,则内容将被替换。
在下面的例子中,多行文本框用于显示文本文件的内容 −
import PySimpleGUI as psg file = open("zen.txt") text = file.read() l1 = psg.Text('Multiline Input/Output', font=('Arial Bold', 20), expand_x=True, justification='center') t1 = psg.Multiline(text, enable_events=True, key='-INPUT-', expand_x=True, expand_y=True, justification='left') b1 = psg.Button('Ok', key='-OK-', font=('Arial Bold', 20)) b2 = psg.Button('Exit', font=('Arial Bold', 20)) layout = [[l1], [t1], [b1, b2]] window = psg.Window('Multiline Demo', layout, size=(715, 250)) while True: event, values = window.read() if event == psg.WIN_CLOSED or event == 'Exit': break window.close()
程序会产生如下输出窗口 −