【发布时间】:2016-03-07 06:12:10
【问题描述】:
我想在应用运行时向标签添加文本。它被放置在一个 FloatLayout 中,它被放置在一个 ScrollView 中,以便我可以滚动浏览文本。我希望 FloatLayout 默认大小提示为 1,1,并在添加文本时增加其高度。我应该使用尺寸提示还是常规坐标系就足够了?无论如何,我无法让它工作。当我做了一些测试时,我发现标签的text_size 属性不会在添加新文本时发生变化,但会在窗口大小调整时发生变化。这可能是因为我已将 kv 文件中的 text_size 属性设置为等于标签的大小以获得正确的文本对齐方式(左上角)。这是我的代码:
from kivy import require
require("1.9.1")
import string
from kivy.app import App
from kivy.lang import Builder
from kivy.core.window import Window
from kivy.effects.scroll import ScrollEffect
from kivy.uix.screenmanager import Screen, ScreenManager, NoTransition
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.uix.scrollview import ScrollView
from kivy.uix.floatlayout import FloatLayout
nick = ''
class MyScrollView(ScrollView):
pass
class TextLabel(Label):
pass
Builder.load_string('''
<MyScrollView>:
#...canvas instructions
<TextLabel>:
text_size: self.size
''')
class Chat(Screen):
pass
class ChatApp(App):
def build(self):
def switch_view(*args, **kwargs):
global nick
nick = tx1_intro.text
lb1_main.text = "Chat with " + nick
Screens.current = 'main'
Window.size = (600, 500)
def msg_in(*args, **kwargs):
global nick
msg = tx1_main.text.strip("\n ")
if msg not in string.whitespace:
lb2_main.text += "{}: {}\n".format(nick, msg)
tx1_main.text = ""
fl_layout1_main.size_hint_y += 1
Screens = ScreenManager(transition = NoTransition())
chat = Chat(name = "main")
tx1_main = TextInput(size_hint = (0.9, 0.155),
pos_hint = {"top":0.177,"center_x":0.465})
scr_view_main = MyScrollView(pos_hint = {"top":0.87, "center_x":0.5},
size_hint = (0.97, 0.65),
do_scroll_x = False)
fl_layout1_main = FloatLayout(size_hint_y = 1)
lb2_main = TextLabel(size_hint = (0.99, 0.99),
pos_hint = {"center_x":0.5, "center_y":0.5},
valign = "top",
color = (0, 0, 0, 1))
chat.add_widget(scr_view_main)
scr_view_main.add_widget(fl_layout1_main)
fl_layout1_main.add_widget(lb2_main)
Screens.add_widget(chat)
return Screens
if __name__ == "__main__":
ChatApp().run()
【问题讨论】:
标签: python python-3.x kivy