在一个更大的应用程序中,我在一个单独的屏幕中有一种第一个编辑器。只要在输入窗口小部件中键入一个字符,我就会得到一个持续的关键时钟警告列表: [关键] [时钟]警告,在下一帧之前完成了太多的迭代。检查您的代码,或增加Clock.max_iteration属性
我增加了max-iteration属性,但这并没有解决问题。同样在下面的代码中,如果我设置大小,它没有任何区别。
我怎么能解决这个问题?
编辑屏幕文件:
from kivy.uix.screenmanager import Screen
from kivy.lang import Builder
from kivy.clock import Clock
from functools import partial
Builder.load_file('editscreen.kv')
class EditScreen(Screen):
'''Screen class.'''
def __init__(self, **kwargs):
super(EditScreen, self).__init__(**kwargs)
def updaterst(self):
inptext = self.txt_inpt.text
Clock.schedule_once(partial(self.do_update, inptext), 0.1)
def do_update(self, text, *args):
self.rsttxt.text = text
和kv文件:
# File: editscreen.kv
#: import editscreen editscreen
<EditScreen>:
name: 'EditScreen'
txt_inpt:txt_inpt
rsttxt:rsttxt
BoxLayout:
orientation: 'vertical'
#size_hint: (.99, .99)
TextInput:
id: txt_inpt
#size_hint: None, None
#size: 400, 400
on_text: root.updaterst()
RstDocument:
id: rsttxt
#size_hint: None, None
#size: 400, 400
show_errors: True
答案 0 :(得分:1)
要更改大小,您必须将以下内容添加到kv文件中。有关详细信息,请参阅以下应用程序。
widget.size_hint = (width_percent, height_percent)
size_hint: (None, None)
size_hint: (1, None)
from kivy.app import App
from kivy.uix.screenmanager import Screen, ScreenManager
from kivy.properties import ObjectProperty
from kivy.clock import Clock
from functools import partial
class MyScreenManager(ScreenManager):
pass
class EditScreen(Screen):
'''Screen class.'''
txt_inpt = ObjectProperty(None)
rsttxt = ObjectProperty(None)
def __init__(self, **kwargs):
super(EditScreen, self).__init__(**kwargs)
def updaterst(self):
inptext = self.txt_inpt.text
Clock.schedule_once(partial(self.do_update, inptext), 0.1)
def do_update(self, text, *args):
self.rsttxt.text = text
class EditorApp(App):
title = "Kivy RichText Editor"
def build(self):
return MyScreenManager()
if __name__ == "__main__":
EditorApp().run()
#:kivy 1.10.0
<MyScreenManager>:
EditScreen:
<EditScreen>:
name: 'EditScreen'
txt_inpt:txt_inpt
rsttxt:rsttxt
BoxLayout:
orientation: 'vertical'
# size_hint: (.99, .99)
TextInput:
id: txt_inpt
size_hint: 1, None
height: root.height / 2
on_text: root.updaterst()
RstDocument:
id: rsttxt
size_hint: 1, None
height: root.height / 2
show_errors: True
答案 1 :(得分:1)
我刚刚编辑了一下你的代码并且工作正常没有严重警告:
-py:
from kivy.uix.screenmanager import Screen
from kivy.clock import Clock
from kivy.properties import ObjectProperty
from kivy.app import App
class EditScreen(Screen):
'''Screen class.'''
txt_inpt = ObjectProperty()
def __init__(self, **kwargs):
super(EditScreen, self).__init__(**kwargs)
Clock.schedule_interval(self.do_update, 0.1)
def do_update(self, *args):
self.rsttxt.text = self.txt_inpt.text
class EditorApp(App):
def build(self):
return EditScreen()
if __name__ == "__main__":
EditorApp().run()
-kv:
<EditScreen>:
name: 'EditScreen'
txt_inpt:txt_inpt
rsttxt:rsttxt
BoxLayout:
orientation: 'vertical'
#size_hint: (.99, .99)
TextInput:
id: txt_inpt
#size_hint: None, None
#size: 400, 400
RstDocument:
id: rsttxt
#size_hint: None, None
#size: 400, 400
show_errors: True
输出:
请尝试我的代码告诉我们
答案 2 :(得分:1)
所有与按钮有关。如果连续有许多按钮并且超出了屏幕,则将其缩小会出现错误。我输入了size_hint:无,无,它起作用了。使用FloatLayout定位按钮和其他元素。在dp,sp中设置大小,以使它们不会彼此重叠。为大屏幕制作应用。