PySimpleGUI如何获取选定的文本

7

我是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上进行了搜索,但未找到相关内容。希望这是一件简单的事情,有人能指引我正确的方向。

谢谢,

Randy

2个回答

4
在PySimpleGUI文档中,您会找到一个名为“扩展PySimpleGUI”的部分。它介绍了如何使用在PySimpleGUI中尚未实现的tkinter特性。
每个元素都有一个成员变量名为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小部件。此时,您可以使用该小部件进行通常可用的所有调用。


0

我正在使用 tk.EntryPySimpleGUI.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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接