我正在尝试设置日期和月份显示。
在 planner.kv 文件中,我无法让java.util.Date
子窗口小部件与Telldate
中的pos_hint
一起使用,但似乎工作正常与FloatLayout
。
我不确定我是否正确设置了Button
,或者我是否以错误的方式处理它。
我理解FloatLayout
是Telldate
内部的自定义窗口小部件和子窗口小部件,除非我错了。
其他一切都按预期工作
main.py
FloatLayout
planner.kv
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.properties import ObjectProperty
from time import strftime
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.label import Label
class Telldate(Widget):
todayday = ObjectProperty('')
def __init__(self,*args, **kwargs):
super().__init__(*args, **kwargs)
self.todayday= strftime('%A')
class PlannerApp(App):
pass
if __name__ == '__main__':
PlannerApp().run()
我正在使用带有IDLE V3.6.2的python V3.6.2和Kivy v1.10.0 谢谢你的耐心等待!
---- EDIT1:---
使用
<Telldate>:
Button:
size:(50,50)
text:self.parent.todayday
FloatLayout:
Button:
text: 'ay'
size_hint:(None,None)
pos_hint: { 'x': 0.5, 'y': 0.8}
Telldate:
size_hint:(None,None)
pos_hint: { 'x': 0.5, 'y': 0.8}
而不是
class Telldate(FloatLayout):
允许我设置hint_size,因为我现在继承了FloatLayout属性而不是widget属性,但仍然不允许设置hint_pos。 其余的代码仍然是相同的。
答案 0 :(得分:0)
所以我学到的是,小部件不会继承布局的属性,这是我的问题始于Telldate(Widget)
,我在小部件的文档中找到了这个。
使用Telldate(FloatLayout)
而调用(不确定是否正确的术语)class Telldate
通过<Telldate>
进入kivy解决了我的问题。
然后在我想要调用.kv文件中的自定义小部件时创建FloatLayout
planner.kv
<Tellday@Label>:
size:(50,50)
<Telldate>:
FloatLayout:
Tellday:
size_hint:( None,None)
text: self.parent.parent.todayday
pos_hint:{'top': 0.5,'right':0.5}
main.py
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.properties import ObjectProperty
from time import strftime
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.lang import Builder
class Telldate(FloatLayout):
todayday= ObjectProperty('')
# todaymonth = ObjectProperty('')
def __init__(self,*args, **kwargs):
super().__init__(*args, **kwargs)
self.todayday=strftime('%A')
self.todayday= strftime('%A')
# self.todaymonth= strftime('%b')
class PlannerApp(App):
def build(self):
return Telldate()
if __name__ == '__main__':
PlannerApp().run()
希望这有助于某人!