python kivy garden旋钮如何超驰在_旋钮上

2024-10-02 16:35:19 发布

您现在位置:Python中文网/ 问答频道 /正文

使用基维。花园。旋钮,还有一个问题: 当我移动旋钮时,我试图把它的值发送到命令行,但是我不能使它工作,有什么建议吗? 这是全部代码,先谢谢你,FD。在

#!/usr/bin/python

from threading import Thread
from cmd import Cmd
import logging
logging.getLogger("kivy").disabled = True


from kivy.app import App
from kivy.core.window import Window
from kivy.garden.knob import  Knob
from kivy.uix.gridlayout import GridLayout
from kivy.uix.screenmanager import ScreenManager, Screen

class FirstTimeConnect(Screen):
    def __init__(self, **kwargs):
        super(FirstTimeConnect, self).__init__(**kwargs)
        layout = GridLayout(cols=2)

        layout.knob1 = Knob(knobimg_source="/Users/admin/Dropbox/Strumenti/Concatenativa_PyCpp/knob_img/knob_black.png", marker_img="/Users/admin/Dropbox/Strumenti/Concatenativa_PyCpp/knob_img/bline.png")
        layout.add_widget(layout.knob1)

        def on_knob(self, value):
            print "hi"
        layout.knob1.bind(on_knob=on_knob)

        self.add_widget(layout)

sm = ScreenManager()
sm.add_widget(FirstTimeConnect(name='First Time Connect'))

class MyCmd(Cmd, object):
    pass

class MyApp(App):

    def build(self):
        #return LogScreen()
        return sm

if __name__ == '__main__':
    app = MyApp()
    Thread(target=app.run()).start()
    MyCmd(app).cmdloop()

Tags: fromimportselfaddappimgondef
1条回答
网友
1楼 · 发布于 2024-10-02 16:35:19

要重写小部件/类中的方法,您需要从该类继承方法。您所做的是“重写”Screenon_knob方法,由于Screen没有{}这样的方法,它只是创建了一个新的方法。在

class MyKnob(Knob):
    def on_knob(self, value):
        print("hello!")

还要注意没有属性knob,它与^{}有点“手动”绑定。在偶然的Kivy行为中,on_*方法是事件,要覆盖它们,您需要执行以下操作:

^{pr2}$

取决于你想先执行什么,即

  • 旧行为+你的打印(super+print
  • 您的print+旧行为(print+super

在完全重写它的情况下,只需从方法中删除super(),它不会执行默认行为,例如,假设您使用以下内容重写on_touch_down

class MyWidget(Widget):
    def on_touch_down(self, touch):
        pass

如果触摸与小部件的某个区域发生碰撞(如果您触摸小部件),则不会发生触摸事件。在

相关问题 更多 >