Сделать текстовое поле в PySimpleGUI - PullRequest
0 голосов
/ 15 апреля 2020

Я следую документации PySimple GUI и делаю свои собственные правки, как я go. Я очень новичок в этом и имел опыт использования Tkinter. В Tkinter есть текстовое поле, которое вы получаете с кодом Text(window, width=?, height=?, wrap=WORD, background=yellow). Однако в PySimple GUI с аналогичным кодом: layout = [[sg.Text('Some text on Row 1')]] - создает метку. Мой код:

import PySimpleGUI as sg

sg.theme('DarkAmber')   # Add a touch of color
# All the stuff inside your window.
layout = [  [sg.Text('Some text on Row 1')],
            [sg.Text('Enter something on Row 2'), sg.InputText()],
            [sg.Button('Ok'), sg.Button('Close Window')],
            [sg.Text('This is some text', font='Courier 12', text_color='blue', background_color='green')],
            [sg.Listbox(values=('value1', 'value2', 'value3'), size=(30, 2), key='_LISTBOX_')]]

# Create the Window
window = sg.Window('Test', layout).Finalize()
window.Maximize()
# Event Loop to process "events" and get the "values" of the inputs
while True:
    event, values = window.read()
    if event in (None, 'Close Window'): # if user closes window or clicks cancel
        break
    print('You entered ', values[0])

window.close()

Я пытался использовать PySimple Gui: Как ввести текст в текстовое поле? , но текстовое поле здесь на самом деле является списком:

This questions Text Box

, который не похож на TextBox, который я хочу:

TextBox I want

TextBox окружен красными линиями. Может кто-нибудь помочь мне найти код, который даст мне TextBox, который я желаю?

1 Ответ

1 голос
/ 16 апреля 2020

Вы можете использовать sg.Multiline(...), который является Text виджетом tkinter.

Чтобы получить содержимое sg.Multiline, вы можете присвоить ему уникальный key и использовать это key чтобы получить его содержимое в values dict.

Ниже приведен пример на основе вашего кода:

import PySimpleGUI as sg

sg.theme('DarkAmber')   # Add a touch of color
# All the stuff inside your window.
layout = [  [sg.Text('Some text on Row 1')],
            [sg.Text('Enter something on Row 2'), sg.InputText()],
            [sg.Button('Ok'), sg.Button('Close Window')],
            [sg.Multiline(size=(30, 5), key='textbox')]]  # identify the multiline via key option

# Create the Window
window = sg.Window('Test', layout).Finalize()
#window.Maximize()
# Event Loop to process "events" and get the "values" of the inputs
while True:
    event, values = window.read()
    if event in (None, 'Close Window'): # if user closes window or clicks cancel
        break
    print('You entered in the textbox:')
    print(values['textbox'])  # get the content of multiline via its unique key

window.close()
...