【问题标题】:Python Kivy WidgetsPython Kivy 小部件
【发布时间】:2021-06-26 13:32:14
【问题描述】:

我想添加两个或三个小部件来形成一个页面,向我显示消息并获取我的输入消息,然后按发送按钮将该消息传递给send_msg() 函数,类似于图像中的内容:

我知道在 py 文件中执行此操作的方法,但我需要 kv 文件的代码 提前感谢您的帮助

这是代码:

class ChatPage(GridLayout):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)

    # We are going to use 1 column and 2 rows
    self.cols = 1
    self.rows = 2

    # First row is going to be occupied by our scrollable label
    # We want it be take 90% of app height
    self.history = Label(height=Window.size[1]*0.9, size_hint_y=None)
    self.add_widget(self.history)

    # In the second row, we want to have input fields and Send button
    # Input field should take 80% of window width
    # We also want to bind button click to send_message method
    self.new_message = TextInput(width=Window.size[0]*0.8, size_hint_x=None, multiline=False)
    self.send = Button(text="Send")
    self.send.bind(on_press=self.send_message)

    # To be able to add 2 widgets into a layout with just one column, we use additional layout,
    # add widgets there, then add this layout to main layout as second row
    bottom_line = GridLayout(cols=2)
    bottom_line.add_widget(self.new_message)
    bottom_line.add_widget(self.send)
    self.add_widget(bottom_line)

   # Gets called when either Send button or Enter key is being pressed
   # (kivy passes button object here as well, but we don;t care about it)
    def send_message(self, _):
        print("send a message!!!")

【问题讨论】:

    标签: python-3.x kivy kivymd


    【解决方案1】:

    很难让小部件占据GridLayout 中的两列。一种更简单的方法是使用BoxLayouts:

    BoxLayout:
        orientation: 'vertical'
        ScrollView:
            size_hint_y: 0.9
            Label:
                id: label
                size_hint_y: None
                height: self.texture_size[1]
        BoxLayout:
            orientation: 'horizontal'
            size_hint_y: 0.1
            TextInput:
                id: ti
                size_hint_x: 0.8
            Button:
                text: 'send'
                size_hint_x: 0.2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-23
      • 2018-11-25
      • 1970-01-01
      • 2018-09-23
      • 1970-01-01
      相关资源
      最近更新 更多