New Demo Program - Multiline Element clipboard operations using a right click menu
This commit is contained in:
parent
b8111190d4
commit
f2f0ea99a7
|
@ -0,0 +1,62 @@
|
||||||
|
import PySimpleGUI as sg
|
||||||
|
|
||||||
|
"""
|
||||||
|
Demo - Adding a right click menu to perform multiline element common operations
|
||||||
|
|
||||||
|
Sometimes Multiline Elements can benefit from a right click menu. There are no default menu
|
||||||
|
that come with tkinter, so you'll need to create your own.
|
||||||
|
|
||||||
|
Some common clipboard types of operations
|
||||||
|
Select all
|
||||||
|
Copy
|
||||||
|
Paste
|
||||||
|
Cut
|
||||||
|
|
||||||
|
The underlying Widget is accessed several times in this code because setting selections,
|
||||||
|
getting their values, and clipboard operations are not currently exposed in the APIs
|
||||||
|
|
||||||
|
NOTE - With tkinter, if you use the built-in clipboard, you must keep your program
|
||||||
|
running in order to access the clipboard. Upon exit, your clipboard will be deleted.
|
||||||
|
You can get around this by using other clipboard packages.
|
||||||
|
|
||||||
|
Copyright 2021 PySimpleGUI
|
||||||
|
"""
|
||||||
|
|
||||||
|
right_click_menu = ['', ['Copy', 'Paste', 'Select All', 'Cut']]
|
||||||
|
MLINE_KEY = '-MLINE-'
|
||||||
|
|
||||||
|
layout = [ [sg.Text('Using a custom right click menu with Multiline Element')],
|
||||||
|
[sg.Multiline(size=(60,20), key=MLINE_KEY, right_click_menu=right_click_menu)],
|
||||||
|
[sg.B('Go'), sg.B('Exit')]]
|
||||||
|
|
||||||
|
window = sg.Window('Right Click Menu Multiline', layout)
|
||||||
|
|
||||||
|
mline:sg.Multiline = window[MLINE_KEY]
|
||||||
|
|
||||||
|
while True:
|
||||||
|
event, values = window.read() # type: (str, dict)
|
||||||
|
print(event, values)
|
||||||
|
if event in (sg.WIN_CLOSED, 'Exit'):
|
||||||
|
break
|
||||||
|
if event == 'Select All':
|
||||||
|
mline.Widget.selection_clear()
|
||||||
|
mline.Widget.tag_add('sel', '1.0', 'end')
|
||||||
|
elif event == 'Copy':
|
||||||
|
try:
|
||||||
|
text = mline.Widget.selection_get()
|
||||||
|
window.TKroot.clipboard_clear()
|
||||||
|
window.TKroot.clipboard_append(text)
|
||||||
|
except:
|
||||||
|
print('Nothing selected')
|
||||||
|
elif event == 'Paste':
|
||||||
|
mline.Widget.insert(sg.tk.INSERT, window.TKroot.clipboard_get())
|
||||||
|
elif event == 'Cut':
|
||||||
|
try:
|
||||||
|
text = mline.Widget.selection_get()
|
||||||
|
window.TKroot.clipboard_clear()
|
||||||
|
window.TKroot.clipboard_append(text)
|
||||||
|
mline.update('')
|
||||||
|
except:
|
||||||
|
print('Nothing selected')
|
||||||
|
|
||||||
|
window.close()
|
Loading…
Reference in New Issue