버튼을 누른 후 ModalView에서 카운트 다운 타이머를 생성하려면 어떻게합니까?

타이머가있는 모달 뷰를 만들려고합니다. "시작"버튼을 누르면 모달보기가 나타나고 카운트 다운이 시작됩니다. 그러나 valueerror 메시지가 표시됩니다. ValueError : TimerView.timer에 잘못된 형식이 있습니다 (0x0000017AD40D6180 >>>에 main.TimerView 개체가 있음). 코드의 어느 부분이 잘못되었는지 알 수 있습니까? 미리 감사드립니다.

from kivymd.app import MDApp
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition, WipeTransition, NoTransition, SlideTransition
from kivymd.theming import ThemeManager
from kivy.properties import StringProperty, NumericProperty
from kivy.uix.modalview import ModalView
from kivymd.uix.label import MDLabel
from kivy.clock import Clock

class TimerView(ModalView):
    number = NumericProperty(15)

    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.background = "transparent_image.png"
        self.background_color = [1/3,1/3,1/3,0.8]
        self.auto_dismiss = False
        self.size_hint = (None,None)
        self.size = (150,50)
        timer_countdown = MDLabel(font_style = 'H1', theme_text_color = 'Primary',
                                  text = str(self.number), halign = 'center',
                                  text_color = (1,1,1,1), size_hint_y = None)
        self.add_widget(timer_countdown)

    def decrement_time(self, dt):
        self.number -= 1

    def start(self,*args):
        self.timer = Clock.schedule_interval(self.decrement_time, 1)

    def stop(self):
        Clock.unschedule(self.timer)

class MainScreen(Screen):
    pass

class BeginScreen(Screen):
    pass

class MyScreenManager(ScreenManager):

    def __init__(self,**kwargs):
        super().__init__(**kwargs)
        self.view = TimerView()

    def open_view(self):
        self.view.bind(on_open=self.view.start)
        self.view.open()

main_widget_kv = ('''
#: import ScrollEffect kivy.effects.scroll.ScrollEffect

MyScreenManager:
    BeginScreen:

<BeginScreen>:
    begin_button:begin_button
    name: "begin"
    canvas.before:
        Color: 
            rgb: .1, .1, .1
    FloatLayout:
        id: begin_layout
        Button:
            id: begin_button
            text: 'Begin'
            font_size: 24
            on_press: app.root.open_view()
            size_hint: (.4,.25)
            pos_hint: {"center_x":.5, "center_y":.2}
            color: [0,0,0,1]


''')

class TestApp(MDApp):

    def __init__(self,**kwargs):
        self.theme_cls.theme_style = "Dark"
        self.theme_cls.primary_palette = "Red"
        super().__init__(**kwargs)

    def build(self):
        main_widget = Builder.load_string(main_widget_kv)
        return main_widget


if __name__ == '__main__':
    TestApp().run()
존 앤더슨

in python 코드 text를 설정하면 Label해당 값을 사용하며 자동으로 변경되지 않습니다. 에서 동일한 작업을 수행하면 kv자동으로 업데이트됩니다 ( text참조가 a 인 경우 Property). 그러니 변화는 self.number당신에 영향을주지 않습니다 timer_countdown Label.

따라서이를 text명시 적으로 업데이트해야합니다 . 다음은이를 수행하는 코드의 수정 된 버전입니다.

class TimerView(ModalView):
    number = NumericProperty(15)

    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.background = "transparent_image.png"
        self.background_color = [1/3,1/3,1/3,0.8]
        self.auto_dismiss = False
        self.size_hint = (None,None)
        self.size = (150,50)
        self.timer_countdown = MDLabel(font_style = 'H1', theme_text_color = 'Primary',
                                  text = str(self.number), halign = 'center',
                                  text_color = (1,1,1,1), size_hint_y = None)
        self.add_widget(self.timer_countdown)

    def decrement_time(self, dt):
        self.number -= 1
        # self.timer_countdown.text = str(self.number)

    def on_number(self, instance, value):
        self.timer_countdown.text = str(value)

    def start(self,*args):
        self.t = Clock.schedule_interval(self.decrement_time, 1)

    def stop(self):
        Clock.unschedule(self.t)

에 대한 참조 MDLabel에 보관 self.timer_countdown하고, on_number()방법은 자동으로 실행됩니다 number변경 사항을 바로 업데이트합니다 MDLabel. 다음 행의 주석 처리를 제거하여 업데이트를 수행 할 수도 있습니다.

# self.timer_countdown.text = str(self.number)

이 경우, number을 할 필요가 없습니다 Propertyon_number()방법은 필요하지 않습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

카운트 다운 타이머에서 카운트 다운을 표시하려면 어떻게합니까

분류에서Dev

버튼으로 카운트 다운 타이머를 활성화하려면 어떻게해야합니까?

분류에서Dev

실행중인 카운트 다운 타이머에서 시간을 빼려면 어떻게합니까?

분류에서Dev

Java에서 버튼을 누른 후 이미지를 표시하려면 어떻게해야합니까?

분류에서Dev

Rainmeter에서이 카운트 다운을 다시 시작하려면 어떻게해야합니까?

분류에서Dev

XCODE SWIFT 버튼을 누른 후 다른 파일 / 클래스에서 코드를 실행하려면 어떻게해야합니까?

분류에서Dev

스크립트를 사용하여 아카이브를 다운로드하고 추출하려면 어떻게해야합니까 (후속 명령에 다운로드 한 파일을 안정적으로 지정하려면 어떻게해야합니까)?

분류에서Dev

TextView에서 카운트 다운 타이머를 어떻게 표시합니까?

분류에서Dev

카운트 다운 시간 (H : i : s)을 사용하여 jquery 또는 js에 대한 메이커 카운트 다운 타이머는 어떻게됩니까?

분류에서Dev

Android Studio에서 버튼을 누른 후 내 버튼의 텍스트를 어떻게 변경합니까?

분류에서Dev

클릭시 다른 페이지로 리디렉션되는 동시에 카운트 다운을 시작하려면 어떻게해야합니까?

분류에서Dev

Flutter에서 카운트 다운 후 어떻게 버튼을 활성화 및 비활성화 할 수 있습니까?

분류에서Dev

1 시간 후에 카운트 다운을 시작하는 자바 스크립트에서 카운트 다운 타이머 만들기

분류에서Dev

이 타이머를 제대로 카운트 다운하려면 어떻게해야합니까?

분류에서Dev

다른 버튼이 호출하는 기능에서 gpiozero 버튼 누름을 어떻게 감지합니까?

분류에서Dev

Unity에서 카운트 다운을 사용하여 gnome-session-quit를 어떻게 호출합니까?

분류에서Dev

Unity에서 카운트 다운을 사용하여 gnome-session-quit를 어떻게 호출합니까?

분류에서Dev

루비 변수에서 카운트 다운하기 위해 자바 스크립트 타이머를 어떻게 통합합니까?

분류에서Dev

홈 버튼을 누른 후 웹뷰를 어떻게 다시로드합니까?

분류에서Dev

사용자가 제출 버튼을 누른 후 텍스트 상자에서 사용자 입력을 검색하려면 어떻게합니까?

분류에서Dev

카운트 다운 타이머에서 남은 시간을 어떻게 얻을 수 있습니까?

분류에서Dev

버튼을 누른 후에 만 TextBlock을 표시하려면 어떻게해야합니까?

분류에서Dev

0에 도달하면 카운트 다운 타이머에 "0"을 추가합니다.

분류에서Dev

어떻게 HH에서 카운트 다운 타이머를 표시하기 : MM : SS (영업 시간 : 분 : 초)

분류에서Dev

드롭 다운 목록을 외부 카드에 오버레이하려면 어떻게해야합니까?

분류에서Dev

마우스 가운데 버튼이나 다른 버튼을 손상시키지 않고 마우스를 휴대하려면 어떻게합니까?

분류에서Dev

드릴 다운 후 누적 열이있는 차트를 만들려면 어떻게해야합니까?

분류에서Dev

kivy / python에서 화면을 변경하는 카운트 다운 / 타이머

분류에서Dev

이 jquery 카운트 다운 타이머에 "일"을 추가하는 데 도움이 필요합니다.

Related 관련 기사

  1. 1

    카운트 다운 타이머에서 카운트 다운을 표시하려면 어떻게합니까

  2. 2

    버튼으로 카운트 다운 타이머를 활성화하려면 어떻게해야합니까?

  3. 3

    실행중인 카운트 다운 타이머에서 시간을 빼려면 어떻게합니까?

  4. 4

    Java에서 버튼을 누른 후 이미지를 표시하려면 어떻게해야합니까?

  5. 5

    Rainmeter에서이 카운트 다운을 다시 시작하려면 어떻게해야합니까?

  6. 6

    XCODE SWIFT 버튼을 누른 후 다른 파일 / 클래스에서 코드를 실행하려면 어떻게해야합니까?

  7. 7

    스크립트를 사용하여 아카이브를 다운로드하고 추출하려면 어떻게해야합니까 (후속 명령에 다운로드 한 파일을 안정적으로 지정하려면 어떻게해야합니까)?

  8. 8

    TextView에서 카운트 다운 타이머를 어떻게 표시합니까?

  9. 9

    카운트 다운 시간 (H : i : s)을 사용하여 jquery 또는 js에 대한 메이커 카운트 다운 타이머는 어떻게됩니까?

  10. 10

    Android Studio에서 버튼을 누른 후 내 버튼의 텍스트를 어떻게 변경합니까?

  11. 11

    클릭시 다른 페이지로 리디렉션되는 동시에 카운트 다운을 시작하려면 어떻게해야합니까?

  12. 12

    Flutter에서 카운트 다운 후 어떻게 버튼을 활성화 및 비활성화 할 수 있습니까?

  13. 13

    1 시간 후에 카운트 다운을 시작하는 자바 스크립트에서 카운트 다운 타이머 만들기

  14. 14

    이 타이머를 제대로 카운트 다운하려면 어떻게해야합니까?

  15. 15

    다른 버튼이 호출하는 기능에서 gpiozero 버튼 누름을 어떻게 감지합니까?

  16. 16

    Unity에서 카운트 다운을 사용하여 gnome-session-quit를 어떻게 호출합니까?

  17. 17

    Unity에서 카운트 다운을 사용하여 gnome-session-quit를 어떻게 호출합니까?

  18. 18

    루비 변수에서 카운트 다운하기 위해 자바 스크립트 타이머를 어떻게 통합합니까?

  19. 19

    홈 버튼을 누른 후 웹뷰를 어떻게 다시로드합니까?

  20. 20

    사용자가 제출 버튼을 누른 후 텍스트 상자에서 사용자 입력을 검색하려면 어떻게합니까?

  21. 21

    카운트 다운 타이머에서 남은 시간을 어떻게 얻을 수 있습니까?

  22. 22

    버튼을 누른 후에 만 TextBlock을 표시하려면 어떻게해야합니까?

  23. 23

    0에 도달하면 카운트 다운 타이머에 "0"을 추가합니다.

  24. 24

    어떻게 HH에서 카운트 다운 타이머를 표시하기 : MM : SS (영업 시간 : 분 : 초)

  25. 25

    드롭 다운 목록을 외부 카드에 오버레이하려면 어떻게해야합니까?

  26. 26

    마우스 가운데 버튼이나 다른 버튼을 손상시키지 않고 마우스를 휴대하려면 어떻게합니까?

  27. 27

    드릴 다운 후 누적 열이있는 차트를 만들려면 어떻게해야합니까?

  28. 28

    kivy / python에서 화면을 변경하는 카운트 다운 / 타이머

  29. 29

    이 jquery 카운트 다운 타이머에 "일"을 추가하는 데 도움이 필요합니다.

뜨겁다태그

보관