gpt4 book ai didi

python - Kivy右键菜单

转载 作者:行者123 更新时间:2023-11-30 22:32:41 26 4
gpt4 key购买 nike

我试图找到一种在 Kivy 中启用常规右键单击的方法,但没有任何运气。

我可以找到一种方法来禁用多点触控:-

Config.set('input', 'mouse', 'mouse,disable_multitouch')

但是右键单击就像左键单击一样,我需要能够复制、剪切、粘贴等。

我正在制作一个信息中心 GUI。

最佳答案

enter image description here

检测右键单击

您可以将 on_touch_downif touch.button == 'right': 结合使用来检测右键单击。

获取上下文菜单

TextInput 有一个方法 _show_copy_paste,它打开一个气泡作为上下文菜单。

我认为这对于 Label 来说是不可能的。如果你想实现的话。我建议您制作自己的标签并启用这些属性,并从 TextInput 中汲取灵感。

这是一项相当大量的工作。因此,我更喜欢使用带有属性 readonly=True 的 TextInput。我编写了 TextInput 的一个版本,右键单击时会打开上下文菜单(又名“气泡”)。这是在下面的示例应用程序中实现的。我在 Windows 上编码并测试了它。

from kivy.app import App
from kivy.lang import Builder
from kivy.config import Config
from kivy.base import EventLoop
from kivy.uix.textinput import TextInput


Config.set('input', 'mouse', 'mouse,disable_multitouch')



class RightClickTextInput(TextInput):

def on_touch_down(self, touch):

super(RightClickTextInput,self).on_touch_down(touch)

if touch.button == 'right':
print("right mouse clicked")
pos = super(RightClickTextInput,self).to_local(*self._long_touch_pos, relative=True)

self._show_cut_copy_paste(
pos, EventLoop.window, mode='paste')


kv_string = Builder.load_string("""
RightClickTextInput:
use_bubble: True
text: ('Palimm'*10+"\\n")*40
multiline: True
#readonly: True
""")



class MyApp(App):
def build(self):
return kv_string

if __name__ == '__main__':
MyApp().run()

Kivy 考虑的是移动设备。如果您不使用触摸进行任何操作,那么可能值得查看 tkinter。

关于python - Kivy右键菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45388629/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com