我试图找到一种在Kivy中定期右键单击的方法,但没有任何运气。
我可以找到一种方法来禁用多点触控事物: -
Config.set('input', 'mouse', 'mouse,disable_multitouch')
然后右键单击就像左键单击一样,我需要能够复制,剪切,粘贴等。
我正在制作一种信息中心GUI。
答案 0 :(得分:1)
您可以将on_touch_down
与if touch.button == 'right':
结合使用来检测右键点击。
TextInput有一个方法_show_copy_paste,可以打开一个Bubble作为上下文菜单。
我认为这不可能与Label有关。如果你想实现它。我建议制作自己的标签,启用这些属性并从TextInput中获取想法。
这是相当多的工作。因此,我更喜欢使用TextInput和属性readonly=True
。我编写了一个TextInput版本,当右键单击时打开Contextmenu aka Bubbles。这是在下面的示例应用程序中实现的。我在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。