PySimpleGUI 输入元素
这种类型的widget在任何GUI工具包中都是最受欢迎的。输入元素是基于TKinter中的Entry widget。这个类的对象给出了一个单行的输入文本字段。
除了常见的属性外,输入元素的具体属性如下
编号:Sr.No. | 属性和描述 |
---|---|
1 | default_text 最初作为默认值显示在输入框中的文本 |
2 | disabled 设置元素的禁用状态 |
3 | use_readonly_for_disable 如果为真(默认),tkinter的状态被设置为’readonly’。否则状态设置为’禁用’。 |
4 | password_char 如果这是一个密码字段,则为密码字符 |
输入类定义了 get() 方法,返回用户输入的文本。 update() 方法改变输入元素的一些设置。以下是定义的属性。
编号:Sr.No. | 属性和描述 |
---|---|
1 | value 在输入字段中作为默认文本显示的新文本 |
2 | **disabled ** 元素的禁用或启用状态 |
3 | select 如果是True,那么该文本将被选中 |
4 | visible 改变元素的可见性 |
5 | move_cursor_to 将光标移动到一个特定的偏移。默认为 “结束”。 |
6 | password_char 如果这是一个密码字段,则为密码字符。 |
7 | paste 如果为真,将值粘贴到元素中,而不是替换整个元素。如果有任何东西被选中,它将被替换。文本被插入到当前光标位置。 |
在下面的例子中,该窗口有一个接受用户输入的输入元素。它被编程为只接受数字。如果按了任何非数字键,就会弹出一条信息,告知它是不允许的。为此,输入的最后一个字符将与一个由数字字符组成的字符串进行比较。如果按的最后一个键不是数字,它就会从输入框中删除。
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()
它将产生以下 输出 窗口 –
多行元素
如果你想输入一个由多行组成的文本,你可以使用多行元素而不是输入元素。事实上,它既可以作为输入元素,也可以作为输出元素。如果文本的长度超过了输入/显示的文本的高度/宽度,滚动条就会出现在该元素上。
以下是多行元素的具体属性 –
序号 | 属性和描述 |
---|---|
1 | default_text 要显示的初始文本 |
2 | autoscroll 如果为真,该元素的内容将自动滚动,因为更多的数据被添加到最后。 |
3 | auto_size_text 如果是True(默认),tkinter的状态被设置为’readonly’。否则状态设置为’禁用’。 |
4 | horizontal_scroll 控制是否要显示水平滚动条。如果为 “True”,除了垂直滚动条外,还将显示水平滚动条。 |
5 | reroute_stdout 如果为真,那么所有输出到stdout的内容都将输出到这个元素。 |
6 | reroute_cprint 如果为真,你的cprint调用将输出到这个元素。 |
7 | no_scrollbar 如果是假的,那么将显示一个垂直滚动条(默认)。 |
像输入元素一样,多行类也有一个 get() 方法来检索其文本内容。 Update() 方法改变这个元素的一些属性值。比如说 –
- value – 要显示的新文本
-
append – 如果为真,那么新的值将被添加到当前值的末尾。如果为假,那么内容将被替换。
在下面的例子中,一个多行文本框被用来显示一个文本文件的内容:
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()
该程序将产生以下 输出 窗口 –