python - Kivy Label 和 Popup + 长文本

标签 python popup label kivy

所以我想在弹出窗口中显示一些长文本。如果 Popup 的高度可以随着文本的长度而改变,那将是理想的。但这不是我唯一的问题我已经尝试在不改变大小的情况下使用这段代码实现这个

    boxl = uix.boxlayout.BoxLayout(orientation="vertical")
    boxl2 = uix.boxlayout.BoxLayout(orientation="horizontal")
    pop = Popup(title="Title", content=boxl, size_hint=(0.75,0.8))
    text = "Really long text"

    document = uix.label.Label(text=text,markup=True, valign='top')

    button = uix.button.Button(text='back', size_hint_y=None, height=40)
    button2 = uix.button.Button(text="Button Title", size_hint_y=None, height=40)
    button.bind(on_press=(lambda x:pop.dismiss()))
    button2.bind(on_press=(lambda x,data=data:(self.set_vorteil(data),pop.dismiss())))
    boxl.add_widget(document)

    boxl2.add_widget(button)
    boxl2.add_widget(button2)
    boxl.add_widget(boxl2)
    document.bind(size=document.setter('text_size'))
    pop.open()

有趣的是我的文字被截断了,即使按钮前有很大的空闲空间。我该如何解决这个问题,甚至改正它?我对 Kivy 使用标签的方式感到困惑。

最佳答案

document.bind(size=document.setter('text_size'))

将文本区域限制为特定大小,即小部件本身的大小。它工作得很好,除了你这样做的事实:

boxl.add_widget(boxl2)

这是一件好事,但你忘了设置 size_hint=(None, None)以及 BoxLayout 的特定大小,因此:

enter image description here

另一方面,您将其设置为 Button它们本身,这让您认为布局本身已更改。 (不是。)用例如修复它BoxLayout(size_hint=(None, None), size=<desired size>) .

此外,这种方式并不是很好,因为它限制了用户,例如当移动布局太小时。我宁愿选择可滚动的标签:

from kivy.lang import Builder
from kivy.base import runTouchApp
runTouchApp(Builder.load_string('''
ScrollView:
    Label:
        size_hint_y: None
        text_size: (self.width, None)
        text: 'lorem ipsum dolor ' * 1000
        height: self.texture_size[1]
'''))

或在 RecycleView 中实现它,这将使它变得高效。

关于python - Kivy Label 和 Popup + 长文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42676125/

相关文章:

python - 获取 FastAPI 并行处理请求

python - 如何将列表转换为以索引为值的字典?

jquery - 如何阻止选择框被阻止为 Internet Explorer 8 的弹出位?

javascript - 如何处理 javascript 弹出窗口上的 ESC keydown

python-3.x - Python 3+ Tkinter 中心标签文本

java - 单击鼠标按钮时 LibGDX 更新标签

python - vim - 对齐函数参数

javascript - 本站如何打开新窗口

swift - 如何使用自动布局以编程方式水平对齐具有不同宽度的标签循环

python - Nginx 和 flask 静态目录 - CSS 链接不正确