【问题标题】:Kivy scaling text based on window height and width基于窗口高度和宽度的 Kivy 缩放文本
【发布时间】:2015-07-19 17:40:44
【问题描述】:

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

font_size: self.height - dp(15)

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

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

不幸的是,当 >= texture_size[0] 时它会变小,但是当文本再次变小时,它是

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

【问题讨论】:

    标签: python kivy


    【解决方案1】:

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

    <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 规则:

    <-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

    【讨论】:

      猜你喜欢
      • 2016-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-26
      • 1970-01-01
      • 2011-10-20
      • 1970-01-01
      • 2011-04-09
      相关资源
      最近更新 更多