<tfoot id='BUgpk'></tfoot>

  • <legend id='BUgpk'><style id='BUgpk'><dir id='BUgpk'><q id='BUgpk'></q></dir></style></legend>

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

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

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

      2. 基于窗口高度和宽度的 Kivy 缩放文本

        Kivy scaling text based on window height and width(基于窗口高度和宽度的 Kivy 缩放文本)
            <tbody id='GMkB9'></tbody>

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

                  <tfoot id='GMkB9'></tfoot>

                1. 本文介绍了基于窗口高度和宽度的 Kivy 缩放文本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我想根据窗口高度缩放按钮或标签内的文本,但受窗口宽度限制.以下作品:

                  I want to scale a text inside a button or label based on the window height, but limited by window width. The following works:

                  font_size: self.height - dp(15)
                  

                  但是文本可以超过按钮或标签的宽度,所以我想用类似的东西来限制它:

                  However the text can exceed the width of the button or label, so I want to limit it with something like:

                  font_size: self.height - dp(15) if self.texture_size[0] < self.width else (self.width*2)/(self.height+0.1)
                  

                  不幸的是,当 >= texture_size[0] 时它会变小,但是当文本再次变小时,它是 <自我宽度.所以它最终陷入了一个循环,从而导致 [CRITICAL] [Clock] 错误.

                  Unfortunately this has to problem that when >= texture_size[0] it will become smaller, but then when the text is smaller again, it is < self.width. So it end up stuck in a loop, which results in [CRITICAL] [Clock] error.

                  为了给出更清晰的画面,红条中的文字应该尽可能大,但不要超过按钮宽度:

                  To give a more clear picture, the text in the red bar should be as big as possible, but not exceed the button width:

                  推荐答案

                  如果文本太大,可以使用缩放变换来缩小文本,这样可以避免竞争:

                  You can use a scale transformation to shrink the text if it is too large, which will avoid the race:

                  <ScaleLabel@Label>:
                      _scale: 1. if self.texture_size[0] < self.width else float(self.width) / self.texture_size[0]
                      canvas.before:
                          PushMatrix
                          Scale:
                              origin: self.center
                              x: self._scale or 1.
                              y: self._scale or 1.
                      canvas.after:
                          PopMatrix
                  

                  不过,这确实会缩放画布上的所有内容.因此,如果您尝试绘制背景或其他内容,请确保它位于 PushMatrix/PopMatrix 之外.例如,如果你想将它与 Button 一起使用,你可以重写 Button 的 kv 规则:

                  This does scale everything on the canvas, however. So if you're trying to draw a background or something, make sure it is outside the PushMatrix/PopMatrix. For example, if you wanted to use this with a Button, you could rewrite Button's kv rules:

                  <-ScaleButton@Button>:
                      state_image: self.background_normal if self.state == 'normal' else self.background_down
                      disabled_image: self.background_disabled_normal if self.state == 'normal' else self.background_disabled_down
                      _scale: 1. if self.texture_size[0] < self.width else float(self.width) / self.texture_size[0]
                      canvas:
                          Color:
                              rgba: self.background_color
                          BorderImage:
                              border: self.border
                              pos: self.pos
                              size: self.size
                              source: self.disabled_image if self.disabled else self.state_image
                          PushMatrix
                          Scale:
                              origin: self.center
                              x: self._scale or 1.
                              y: self._scale or 1.
                          Color:
                              rgba: self.disabled_color if self.disabled else self.color
                          Rectangle:
                              texture: self.texture
                              size: self.texture_size
                              pos: int(self.center_x - self.texture_size[0] / 2.), int(self.center_y - self.texture_size[1] / 2.)
                          PopMatrix
                  

                  我创建了一个用法示例作为要点:https://gist.github.com/kived/862db38078170ec0ef83

                  I created a usage example as a gist: https://gist.github.com/kived/862db38078170ec0ef83

                  这篇关于基于窗口高度和宽度的 Kivy 缩放文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Kivy 1.9.0 Windows package KeyError: #39;rthooks#39;(Kivy 1.9.0 Windows 包 KeyError: rthooks)
                  Python Kivy: how to call a function on button click?(Python Kivy:如何在按钮单击时调用函数?)
                  How to disable a widget in Kivy?(如何禁用 Kivy 中的小部件?)
                  Centering an object in Kivy(在 Kivy 中将对象居中)
                  How to downgrade to Python 3.4 from 3.5(如何从 Python 3.5 降级到 Python 3.4)
                  Change button or label text color in kivy(在kivy中更改按钮或标签文本颜色)
                  <i id='woiWE'><tr id='woiWE'><dt id='woiWE'><q id='woiWE'><span id='woiWE'><b id='woiWE'><form id='woiWE'><ins id='woiWE'></ins><ul id='woiWE'></ul><sub id='woiWE'></sub></form><legend id='woiWE'></legend><bdo id='woiWE'><pre id='woiWE'><center id='woiWE'></center></pre></bdo></b><th id='woiWE'></th></span></q></dt></tr></i><div id='woiWE'><tfoot id='woiWE'></tfoot><dl id='woiWE'><fieldset id='woiWE'></fieldset></dl></div>
                2. <small id='woiWE'></small><noframes id='woiWE'>

                      <bdo id='woiWE'></bdo><ul id='woiWE'></ul>

                          <tfoot id='woiWE'></tfoot>
                          <legend id='woiWE'><style id='woiWE'><dir id='woiWE'><q id='woiWE'></q></dir></style></legend>
                              <tbody id='woiWE'></tbody>