私はPythonでセミオフだが、Kivyにはまったく新しい、私の問題はラベルIDを参照していることを知っているが、それを解決することはできないと思う。私は何が必要です。KivyがPythonでラベルのテキストを変更する
私は現在の時刻を表示するためにラベルを取得しようとしていますので、私は更新などの面で正しいフレームワークを持っていることを知っていますが、私はそのラベルのIDを何とか参照し、私は苦労している?
label_text.text
を更新しようとするまで、次のコードはうまく動作し、ラベルなどが表示されます。エラーが発生するのは、AttributeError: 'float' object has no attribute 'lbl_time'
です。私はstr(time.strftime("%H:%M:%S"))
を試しましたが、それで解決しません。
from kivy.app import App
from kivy.base import runTouchApp
from kivy.lang import Builder
from kivy.properties import ListProperty
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty
from kivy.uix.screenmanager import ScreenManager, Screen, WipeTransition, FadeTransition
from kivy.uix.anchorlayout import AnchorLayout
from kivy.properties import ObjectProperty, StringProperty
from kivy.clock import Clock
import time
from datetime import datetime
class MainScreen(Screen):
def update_time(self):
lbl_time = ObjectProperty()
MyTime = time.strftime("%H:%M:%S")
self.lbl_time.text = MyTime
class DetailScreen(Screen):
pass
class SettingsScreen(Screen):
pass
class MyScreenManager(ScreenManager):
pass
root_widget = Builder.load_string('''
MyScreenManager:
MainScreen:
DetailScreen:
SettingsScreen:
<MainScreen>:
name: 'main'
BoxLayout:
orientation: 'vertical'
Label:
id: lbl_time
text: 'Time'
font_size: 60
Label:
text: 'Main2'
font_size: 30
GridLayout:
cols: 2
Label:
text: 'Bottom'
font_size: 30
Label:
text: 'Bottom1'
font_size: 30
<DetailScreen>:
name: 'details'
<SettingsScreen>:
name: 'settings'
''')
class ScreenManagerApp(App):
def build(self):
return root_widget
def on_start(self):
Clock.schedule_interval(MainScreen.update_time, 1)
ScreenManagerApp().run()
変更_update_time_方法:** DEF UPDATE_TIME(自己、*引数):MyTime = time.strftime( "%のH:%のM:%S")自己Iは、以下のコードで上記のすべてを固定しました。 ids ['lbl_time']。text = MyTime ** – Dzmitry
こんにちは、申し訳ありません - >ファイル "MyApp.py"、行20、update_time self.ids ['lbl_time']。テキスト= MyTime AttributeError : 'float'オブジェクトに属性 'ids''がありません – northwarks
彼のメソッド 'Clock.schedule_interval(MainScreen()。update_time、1)'にアクセスするには* MainScreen()*を呼び出す必要があります – Dzmitry