如何解决为什么我的 Python PySimpleGUI 窗口不能右键单击,所以我可以从剪贴板粘贴?
我尝试使用右键菜单将数据粘贴到窗口中,但该选项根本不存在。
import PySimpleGUI as sg
layout = [[sg.Text('Name')],# main window
[sg.InputText(key='-NAME-')],[sg.Text('Phone')],[sg.InputText(key="-PHONE-")],[sg.Text('Facebook ID')],[sg.InputText(key="-ID-")],[sg.Text('email')],[sg.InputText(key="-EMAIL-")],[sg.Cancel(key="-CANCEL-"),sg.Submit(key="-SUBMIT-")]
]
window = sg.Window('Facebook',layout)
while True: # start here
event,values = window.read()
fb_id = values['-ID-']
fb_name = values['-NAME-']
my_phone = values['-PHONE-']
fb_email = values["-EMAIL-"]
if event == "-CANCEL-":
break
解决方法
多行元素的右键菜单不是 tkinter 自动提供的。 Control A、Control C 等键盘绑定是自动提供的。
此代码将为您提供多行元素的简单右键单击菜单
它还没有被添加到官方演示程序中,但很快就会......
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()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。