在另一个类中使用时钟信息

2024-04-18 15:58:23 发布

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

我试着写一个简单的时钟应用程序。它工作得很好,但我想知道,是否有办法使用Drawing()类中simple_clock(App)的方法并将信息存储在那里

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.graphics import Line
from kivy.core.image import Image
from kivy.uix.button import Button
from kivy.clock import Clock
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition
from kivy.uix.gridlayout import GridLayout

class another_screen(Screen):
    pass
class Drawing():
    pass

presentation = Builder.load_file("simple_clock_kivy.kv")

class simple_clock(App):

    sw_started = False
    sw_seconds = 0

    def update_clock(self, nap):
        if self.sw_started:
            self.sw_seconds += nap
        print(self.sw_seconds)

    def start_stop(self):
        self.sw_started = True

    def reset(self):
        if self.sw_seconds:
            self.sw_seconds = 0
        else:
            pass

    def stop_clock(self):
        self.sw_started = False

    def on_start(self):
        Clock.schedule_interval(self.update_clock, 0)

    def build(self):
        return presentation

if __name__=="__main__":
    simple_clock().run()
<another_screen>:
    name: "other"

    FloatLayout:
        Drawing:    
            id: other

        Button:
            id: start_stop
            text: 'Start'
            size_hint: 0.2, 0.05
            pos_hint: {"x": 0, "bottom": 1}
            on_press: app.start_stop()


        Button:
            id: reset
            text: 'Reset'
            size_hint: 0.2, 0.05
            pos_hint: {"x": 0.6, "bottom": 1}
            on_press: app.reset()

        Button:
            id: stop
            text: 'Stop'
            size_hint: 0.2, 0.05
            pos_hint: {"x": 0.8, "bottom": 1}
            on_press: app.stop_clock()

有人按下“开始”按钮,时间开始滴答作响,允许画图“停止”按钮,时间停止。我想把绘图的持续时间保存到一个变量中


Tags: fromimportselfappdefbuttonswsimple
1条回答
网友
1楼 · 发布于 2024-04-18 15:58:23

类App()中定义的访问属性/方法

class App()之外的任何类中

  • 使用App.get_running_app()获取对象app
  • 调用方法,例如App.get_running_app().update_clock()
  • 访问属性,例如App.get_running_app().sw_seconds

相关问题 更多 >