tkinter.Text 等であれば、widget.selection_get()
で得られますね。
残念ながら、PySimpleGUI の Multiline クラスに選択範囲に関する API は見当たりませんでした。
python
1 def Get(self):
2 """
3 Return current contents of the Multiline Element
4 :return: current contents of the Multiline Element (used as an input type of Multiline
5 :rtype: (str)
6 """
7
8 return self.TKText.get(1.0, tk.END)
バックエンド毎に異なる処理が必要そうです。
PySimpleGUI は、簡単な事は短い記述で出来ますが、
少し込み入った事になると、実装内部(この場合はtkinter)に踏み込むことになりそうな印象です。
例えば、入力フォームの生成等には向いてるが、これでエディターを実装するとなると難しい。
python
1import tkinter as tk
2import PySimpleGUI as sg
3
4window = sg.Window("Copy selected text", [
5 [sg.Multiline(key="-INPUT-")],
6 [sg.Button("Copy")],
7 [sg.Multiline(key="-OUTPUT-")],
8 ])
9
10while True:
11 event, values = window.read()
12 if event is "Copy":
13 try:
14 # Tkinterの場合 .TKText 経由でアクセス
15 selected = window["-INPUT-"].TKText.selection_get()
16 except tk._tkinter.TclError:
17 pass # 選択範囲がない場合のエラーを無視
18 else:
19 window["-OUTPUT-"].update(selected)
20 else:
21 break
22
23window.close()
参考にした情報の探し方:
READMEより
There are 5 resources that work together to provide to you the fastest path to success. They are:
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/22 15:06