第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何每秒更新畫布?

如何每秒更新畫布?

慕尼黑8549860 2021-12-17 14:39:56
我正在嘗試創(chuàng)建一個帶有 3 個弧的時鐘,一個用于小時、分鐘和秒。該應用程序當前繪制每條弧線,按預期使用不同的顏色和半徑?;【€還根據(jù)應用程序啟動的時間填充。紅色圓弧代表小時,綠色圓弧代表分鐘,藍色圓弧代表秒。從這里開始,我試圖更新畫布,以便弧線根據(jù)時間變化(每秒一次)。我還想要一個在時鐘中心顯示時間的標簽。誰能幫我解決這個問題?我對 Kivy 比較陌生,所以我不確定我應該做什么。from kivy.app import Appfrom kivy.uix.widget import Widgetfrom kivy.graphics import Color, Linefrom kivy.uix.floatlayout import FloatLayoutfrom kivy.clock import Clockfrom datetime import datetime# update canvas every second# display time in center of clockclass drawClock(FloatLayout):    def __init__(self, **kwargs):        super(drawClock, self).__init__(**kwargs)        self.bind(pos=self.updateClock)        self.bind(size=self.updateClock)    def updateClock(self, *kwargs):        with self.canvas:            now = datetime.now()            hour = now.hour            minute = now.minute            second = now.second            hourAngle = (hour%12) * 30            minuteAngle = minute * 6            secondAngle = second * 6            Line(circle = (self.center_x, self.center_y, 80, 0, hourAngle), width = 2, color = Color(1,0,0))            Line(circle = (self.center_x, self.center_y, 65, 0, minuteAngle), width = 2, color = Color(0,1,0))            Line(circle = (self.center_x, self.center_y, 50, 0, secondAngle), width = 2, color = Color(0,0,1))class mainApp(App):    def build(self):        return drawClock()if __name__ == '__main__':    mainApp().run()
查看完整描述

2 回答

?
函數(shù)式編程

TA貢獻1807條經驗 獲得超9個贊

您必須使用Clock.schedule_interval()來更新繪畫,但您必須重用它們而不是創(chuàng)建新的 Lines 以節(jié)省資源:


from kivy.app import App

from kivy.graphics import Color, Line

from kivy.uix.floatlayout import FloatLayout

from kivy.clock import Clock

from datetime import datetime


class drawClock(FloatLayout):

    def __init__(self, **kwargs):

        super(drawClock, self).__init__(**kwargs)

        self.bind(pos=self.updateClock)

        self.bind(size=self.updateClock)

        Clock.schedule_interval(self.updateClock, 1)

        self.create_canvas()


    def create_canvas(self):

        with self.canvas:

            self.hour_line = Line(width = 2, color = Color(1,0,0))

            self.minute_line =  Line(width = 2, color = Color(0,1,0))

            self.second_line = Line(width = 2, color = Color(0,0,1))


    def updateClock(self, *kwargs):

        now = datetime.now()

        hour = now.hour

        minute = now.minute

        second = now.second

        hourAngle = (hour%12) * 30

        minuteAngle = minute * 6

        secondAngle = second * 6

        self.hour_line.circle = self.center_x, self.center_y, 80, 0, hourAngle

        self.minute_line.circle = self.center_x, self.center_y, 65, 0, minuteAngle

        self.second_line.circle = self.center_x, self.center_y, 50, 0, secondAngle



class mainApp(App):

    def build(self):

        return drawClock()


if __name__ == '__main__':

    mainApp().run()


查看完整回答
反對 回復 2021-12-17
?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

使用update()方法。這是一種粗略的方法,但它會給你你想要的。update 方法基本上更新窗口。

一種更有效的方法是使用該after()方法。

after 基本上告訴了之后要做什么,所以弄清楚。

window.after(delay_ms, callback=None, *args)

這些是 的參數(shù)after()。

例如,這將是等待一秒鐘然后執(zhí)行 func up

window.after(1000, up)


查看完整回答
反對 回復 2021-12-17
  • 2 回答
  • 0 關注
  • 186 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號