【问题标题】:Kivy Widget, Starting FunctionKivy 小部件,启动功能
【发布时间】:2014-12-25 17:30:24
【问题描述】:
from random import random
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.graphics import Color, Ellipse, Line

class MyPaintWidget(Widget):

    def on_touch_down(self, touch):
        color = (random(), random(), random())
        with self.canvas:
            Color(*color)
            d = 30.
            Ellipse(pos=(50 - d / 2, 50 - d / 2), size=(d, d))
            Ellipse(pos=((100) - d / 2, 50 - d / 2), size=(d, d))
            Ellipse(pos=((100) - d / 2, (100) - d / 2), size=(d, d))
            Ellipse(pos=(50 - d / 2, (100) - d / 2), size=(d, d))



class MyPaintApp(App):

    def build(self):
        return MyPaintWidget()


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

根据教程修改绘图程序。

我想要更改它,以便 4 个点将在程序开始时出现,而不是在单击时出现。知道怎么做吗?

【问题讨论】:

    标签: python widget kivy


    【解决方案1】:

    那些点是由你的on_touch_down 函数显示的,当你点击时它会自动触发,所以这就是为什么在你点击之前什么都没有显示的原因。您可以通过将 MyPaintWidget 修改为以下内容来轻松修复它:

    class MyPaintWidget(Widget):
        def __init__(self):
            super(MyPaintWidget, self).__init__()
            self.dots()
    
        def on_touch_down(self, touch):
            self.dots()
    
        def dots(self):
            color = (random(), random(), random())
            with self.canvas:
                Color(*color)
                d = 30.
                Ellipse(pos=(50 - d / 2, 50 - d / 2), size=(d, d))
                Ellipse(pos=((100) - d / 2, 50 - d / 2), size=(d, d))
                Ellipse(pos=((100) - d / 2, (100) - d / 2), size=(d, d))
                Ellipse(pos=(50 - d / 2, (100) - d / 2), size=(d, d))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-27
      相关资源
      最近更新 更多