• <bdo id='TWENB'></bdo><ul id='TWENB'></ul>

        <legend id='TWENB'><style id='TWENB'><dir id='TWENB'><q id='TWENB'></q></dir></style></legend>
      1. <i id='TWENB'><tr id='TWENB'><dt id='TWENB'><q id='TWENB'><span id='TWENB'><b id='TWENB'><form id='TWENB'><ins id='TWENB'></ins><ul id='TWENB'></ul><sub id='TWENB'></sub></form><legend id='TWENB'></legend><bdo id='TWENB'><pre id='TWENB'><center id='TWENB'></center></pre></bdo></b><th id='TWENB'></th></span></q></dt></tr></i><div id='TWENB'><tfoot id='TWENB'></tfoot><dl id='TWENB'><fieldset id='TWENB'></fieldset></dl></div>

        <small id='TWENB'></small><noframes id='TWENB'>

      2. <tfoot id='TWENB'></tfoot>

        Kivy TextInput水平和垂直对齐(文本居中)

        时间:2024-08-10
          <tbody id='LCn47'></tbody>

        • <bdo id='LCn47'></bdo><ul id='LCn47'></ul>
        • <tfoot id='LCn47'></tfoot>

            <small id='LCn47'></small><noframes id='LCn47'>

              <legend id='LCn47'><style id='LCn47'><dir id='LCn47'><q id='LCn47'></q></dir></style></legend>
            • <i id='LCn47'><tr id='LCn47'><dt id='LCn47'><q id='LCn47'><span id='LCn47'><b id='LCn47'><form id='LCn47'><ins id='LCn47'></ins><ul id='LCn47'></ul><sub id='LCn47'></sub></form><legend id='LCn47'></legend><bdo id='LCn47'><pre id='LCn47'><center id='LCn47'></center></pre></bdo></b><th id='LCn47'></th></span></q></dt></tr></i><div id='LCn47'><tfoot id='LCn47'></tfoot><dl id='LCn47'><fieldset id='LCn47'></fieldset></dl></div>

                  本文介绍了Kivy TextInput水平和垂直对齐(文本居中)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  如何将Kivy中的TextInput中的文本水平居中?

                  我有以下屏幕:

                  但我想将我的文本集中在一起,如下所示:

                  这是我的KV语言的一部分:

                          BoxLayout:  
                              orientation: 'vertical'
                              Label:
                                  markup: True
                                  text: '[b] Type something... [/b]'
                                  size_hint: 1, 0.6
                                  size: self.parent.size[0], 200
                                  font_size: self.size[0] * 0.1
                                  text_size: self.size
                                  halign: 'center'
                                  valign: 'middle'
                  
                                  canvas.before:
                                      Color:
                                          rgb: 0, 0, 204
                                      Rectangle:
                                          pos: self.pos
                                          size: self.size
                  
                              TextInput:
                                  focus: True
                  

                  如何使TextInput的文本居中?

                  推荐答案

                  AFAIK中没有与Label相同的对齐方式,但是,您可以使用padding将位置推到您想要的任何位置。请记住,更改文本大小会影响居中,因此您需要重新计算更改的大小(例如,在使用多个设备、大小等时)。

                  或者甚至可能有一种解决方法,您可以使TextInput不可见,使用Label获取触摸事件以触发TextInput(这将打开键盘),并在更改TextInput的Text属性时更改Label的文本。您将无法以这种方式使用光标,并且需要处理换行文本。

                  示例:

                  from kivy.app import App
                  from kivy.lang import Builder
                  from kivy.uix.boxlayout import BoxLayout
                  Builder.load_string('''
                  <Test>:
                      TextInput:
                          text: 't'
                          font_size: 60
                          # left, right
                          padding_x:
                              [self.center[0] - self._get_text_width(max(self._lines, key=len), self.tab_width, self._label_cached) / 2.0,
                              0] if self.text else [self.center[0], 0]
                          # top, bottom
                          padding_y: [self.height / 2.0 - (self.line_height / 2.0) * len(self._lines), 0]
                  ''')
                  class Test(BoxLayout):
                      pass
                  class TestApp(App):
                      def build(self):
                          return Test()
                  TestApp().run()
                  

                  self._get_text_width(...)显然是TextInput的一种方法。它使用小部件的核心,因此可能不稳定(我发布的第一个示例因我的错误而出现错误)^^

                  现在,如果padding_x的值PADD来自leftright,您将只需要左侧(区别仅在于在正确位置使用加法和减法),因此让我们这样做:

                  1. 获取TextInput
                  2. 中最长的子字符串
                  3. 获取它的宽度(因为它不一致!)通过花式方法
                  4. center[0]坐标减去

                  当我们已经将X轴居中后,让我们转到Y轴。padding_y的值是topbottom

                  1. PADD向下移动小部件的一半height
                  2. 获取单行半高
                  3. 将数字乘以TextInput
                  4. 中的行数
                  5. self.height / 2.0中减去数字
                  6. 底部是0,我们不在乎

                  注意:max()需要一些参数,如果没有textmax()将提高音量。我们将使用padding_x的替代左填充将其关闭,仅使用中心:

                  <padding_x with max> if self.text else [self.center[0], 0]
                  

                  这篇关于Kivy TextInput水平和垂直对齐(文本居中)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:将值从类获取到其他Python 下一篇:为乒乓球游戏创建AI+对速度算法有基本了解

                  相关文章

                • <legend id='oTueA'><style id='oTueA'><dir id='oTueA'><q id='oTueA'></q></dir></style></legend>
                • <small id='oTueA'></small><noframes id='oTueA'>

                    <tfoot id='oTueA'></tfoot>
                      <bdo id='oTueA'></bdo><ul id='oTueA'></ul>

                      <i id='oTueA'><tr id='oTueA'><dt id='oTueA'><q id='oTueA'><span id='oTueA'><b id='oTueA'><form id='oTueA'><ins id='oTueA'></ins><ul id='oTueA'></ul><sub id='oTueA'></sub></form><legend id='oTueA'></legend><bdo id='oTueA'><pre id='oTueA'><center id='oTueA'></center></pre></bdo></b><th id='oTueA'></th></span></q></dt></tr></i><div id='oTueA'><tfoot id='oTueA'></tfoot><dl id='oTueA'><fieldset id='oTueA'></fieldset></dl></div>