使用以下代码:
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.textinput import TextInput
class Main(App):
def build(self):
root = FloatLayout(size=(100, 100))
root.add_widget(TextInput(pos=(0, 0)))
root.add_widget(TextInput(pos=(50, 50)))
return root
if __name__ == '__main__':
Main().run()
我得到两个TextInput
,一个在另一个之上。当我单击顶部TextInput
(通过单击屏幕中间的某个位置)时,由于某种原因,焦点会转到下TextInput
。事实上,我能将焦点集中在顶部TextInput
的唯一方法是完全单击下TextInput
之外(通过单击屏幕顶部的右侧)。为什么会发生这种情况,我该如何规避这种情况?
您的问题可以通过两种方式解决。浮点布局尊重其子项的pos_hint和size_hint属性。因此,您需要为文本输入设置size_hint。
即-
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.textinput import TextInput
class Main(App):
def build(self):
root = FloatLayout(size=(100, 100))
root.add_widget(TextInput(pos=(0, 0),size_hint=(0.5,0.5)))
root.add_widget(TextInput(pos=(100, 100),size_hint=(0.5,0.5)))
return root
if __name__ == '__main__':
Main().run()
或使用框布局而不是浮动布局
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.textinput import TextInput
class Main(App):
def build(self):
root = BoxLayout(size=(100, 100))
root.add_widget(TextInput(pos=(0, 0)))
root.add_widget(TextInput(pos=(50, 50)))
return root
if __name__ == '__main__':
Main().run()