PySimpleGUI 输入元素

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()

它将产生以下 输出 窗口 –

PySimpleGUI - 输入元素

多行元素

如果你想输入一个由多行组成的文本,你可以使用多行元素而不是输入元素。事实上,它既可以作为输入元素,也可以作为输出元素。如果文本的长度超过了输入/显示的文本的高度/宽度,滚动条就会出现在该元素上。

以下是多行元素的具体属性 –

序号 属性和描述
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()

该程序将产生以下 输出 窗口 –

PySimpleGUI - 输入元素

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程