6

PySimpleGUI 的新手。

我有一个多行输入框:

    layout1 = [[sg.Multiline(size=(45,5),key='-IN-')],...
    window1 = sg.Window('Source',layout1,finalize=True)
    event1,values1 = window1.read()

我输入一些文本,然后使用鼠标突出显示部分文本。如何获取选定(突出显示)的文本?

在 Tkinter 中,我简单地使用了:

        self.title = self.e.selection_get() 

但我喜欢我所看到的 PySimpleGUI 并会尝试坚持下去。

我在这里搜索过,github 和 google 并没有找到任何关于此的内容。希望这很简单,并且有人能够指出我正确的方向。

谢谢,

兰迪

4

2 回答 2

3

在 PySimpleGUI 文档中,您会找到关于“扩展 PySimpleGUI”的部分。它讨论了如何使用 tkinter 尚未在 PySimpleGUI 中实现的功能。

每个元素都有一个名为 的成员变量Widget。此变量包含布局中使用的底层小部件。此变量是您通往尚未在 PySimpleGUI 中实现的 tkinter 功能的门户。它使得扩展 PySimpleGUI 非常简单。

这是您的代码以及使用该Widget变量的附加代码。

import PySimpleGUI as sg

layout1 = [[sg.Multiline(size=(45, 5), key='-IN-')], [sg.OK(key="-ok-")]]
window1 = sg.Window('Source', layout1, finalize=True)

while True:  # Event Loop
    event, values = window1.read()
    selection = window1['-IN-'].Widget.selection_get()
    print('selection = ', selection)

从这个答案中得到的重要部分是所有元素都有这个可用于扩展 PySimpleGUI 的成员变量。这是代码中最重要的部分:

window1['-IN-'].Widget

它根据键查找元素,然后为您提供实现它的 tkinter 小部件。此时,您可以使用该小部件进行通常对您可用的所有调用。

于 2020-11-02T14:00:24.460 回答
0

我正在tk.Entry使用PySimpleGUI.Window.

import PySimpleGUI as sg

layout1 = [[sg.Multiline(size=(45, 5), key='-IN-')], [sg.OK(key="-ok-")]]
window1 = sg.Window('Source', layout1, finalize=True)

while 1:
    event1, values1 = window1.read()
    print(event1)
    if event1 == sg.WIN_CLOSED:
        break
    elif event1 == "-ok-":
        try:
            title = window1["-IN-"].Widget.selection_get()
        except sg.tk.TclError:
            title = None
        print("selected text:", title)
于 2020-11-02T09:15:45.287 回答