【问题标题】:How to position a wrappable label in boxlayout --kivy如何在 boxlayout --kivy 中放置可折叠标签
【发布时间】:2020-11-25 15:53:48
【问题描述】:

我很难考虑 kivymd/kivy 中的标记 TextField。正如您所知,他们知道任何文本字段/文本输入中都可用的标记,我想到的下一个想法是创建一个类似于 stackoverflow 的文本字段。这意味着它们将是一个文本字段,下面将是一个标签,并且随着我们继续在文本字段上书写,标签的文本将不断修改。 这个想法似乎行得通,但几乎没有问题

  1. 标签的定位(左右)在kivy中很困难。 2.我不知道为什么,但是下面的标签会在boxlayout中慢慢升起,最终会与上面的文本字段发生碰撞或重叠。 (我希望你也运行下面的代码并通过编写至少 12 行来检查。你可以看到与文本字段重叠的标签)

我需要帮助解决这个问题..

标签将size_hint_y 设置为None,并将text_size 设置为200,None

示例代码如下

from kivymd.app import MDApp
from kivymd.uix.textfield import MDTextField
from kivy.lang import Builder

str = """

MDCard:
    pos_hint : {'x':0.056 , 'top':0.836}
    size_hint : 0.88,0.82

    ScrollView:
        do_scroll_x : False
        BoxLayout:
            height : self.minimum_height
            orientation : 'vertical'
            size_hint : 1,None
            spacing : 15
            padding : 55

            MDTextField:
                id : input_field_1
                mode : 'rectangle'
                size_hint : 0.4,None
                #pos_hint : {'x' : 0.1,'top': 0.8}
                hint_text : '    '
                #y_scroll : True
                multiline : True
                
            Label:
                text : input_field_1.text
                color : 0,0,0,1
                text_size : 200,None
                size_hint_y : None
                #height : self.minimum_height
                maximum_lines : 2
        
                
"""
class My_4app(MDApp):
    def build(self):
        return Builder.load_string(str)
My_4app().run()

非常感谢您对此事的任何帮助。我可以知道我们是否可以在文本字段中添加一个标签,以便它的文本与文本字段文本一起出现..

如果可能,请尽快回复,引理知道您是否需要更多信息

【问题讨论】:

    标签: python kivy label textinput


    【解决方案1】:

    每当您将self.minimum_height 用作BoxLayout 时,您必须确保其子项的高度定义明确。因此,您不能将size_hint_y 用于BoxLayout 的子代。这是您的kv 的修改版本,我认为它可以满足您的需求:

    MDCard:
        pos_hint : {'x':0.056 , 'top':0.836}
        size_hint : 0.88,0.82
    
        ScrollView:
            do_scroll_x : False
            BoxLayout:
                height : self.minimum_height
                orientation : 'vertical'
                size_hint : 1,None
                spacing : 15
                padding : 55
    
                MDTextField:
                    id : input_field_1
                    mode : 'rectangle'
                    size_hint : 0.4,None
                    height: max(44, self.minimum_height)
                    hint_text : '    '
                    multiline : True
                    
                Label:
                    text : input_field_1.text
                    color : 0,0,0,1
                    text_size : 200,None
                    size_hint_y : None
                    height: max(44, self.texture_size[1])
    

    主要变化是将size_hint_y 的两个子BoxLayout 设置为None,并为每个height 设置一个值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-12
      • 1970-01-01
      • 1970-01-01
      • 2018-10-31
      • 2022-11-18
      • 2014-07-08
      相关资源
      最近更新 更多