Kivy:如何在 kivy 中制作圆角 TextInput?

Posted

技术标签:

【中文标题】Kivy:如何在 kivy 中制作圆角 TextInput?【英文标题】:Kivy: How do you make a rounded TextInput in kivy? 【发布时间】:2021-11-03 23:26:31 【问题描述】:

我研究过的伙计们,但这一切都太少了。我发现的只是这个:Kivy: TextInput border radius。所以你们能告诉我如何在 kivy 中更容易地制作圆形文本输入。我需要一个解决方案。我试过radius: [58],不。我在上面的代码链接中听说过 ellipse,虽然我不确定如何使用它。它有什么作用——你如何使用它——或者它不是解决方案。

【问题讨论】:

这可能会对您有所帮助。 ***.com/questions/47639548/… 好吧,看起来不错,但是,你是怎么做到的 【参考方案1】:

解决方法:复制粘贴此脚本并执行(记得改源代码中的背景图片名称“a12.jpeg”),最后2张截图中输入看起来更大的原因是因为PC分辨率必须更高,但在手机中它会看起来正常大小。

from kivymd.app import MDApp as jbsidis
from kivy.lang import Builder as jbsidisx
class jbsidis_Josue_Carranza(jbsidis):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
    def build(self):
        return  jbsidisx.load_string(M)
M="""
#:import Window kivy.core.window.Window
Screen:
    bg_color: (1,1,1,.3)
    highlight_color1jbsidis: [0,0,0,0]
    highlight_color2jbsidis: (0,0,0,.3)
    canvas.before:
        Color:
            rgba: [1,1,1,1]
        Rectangle:
            size: self.size
            pos: self.pos
            source: "a12.jpeg"
    FloatLayout:
        MDIconButton:
            size_hint: .4, .05
            pos_hint: "center_x": .1, "top": .975
            text: "Back"
            icon: 'chevron-left'
            markup: True
        TextInput:
            id: email_jbsidis
            hint_text_color: [0,0,0, 1]
            foreground_color: [1,1,1,1]
            hint_text: "Email"
            background_color: [0,0,0,0]
            background_image: ""
            background_normal: ""
            background_active: ""
            multiline: False
            size_hint: .7 ,.1 #.06
            pos_hint: 'center_x':.5, 'center_y':.8 #'center_y':.8
            canvas.before:
                Color:
                    rgba: root.highlight_color2jbsidis if root.ids.email_jbsidis.focused else [1,1,1,.5]
                RoundedRectangle:
                    size: self.size
                    pos: self.pos
                    radius: 10,
        FloatLayout:
            MDIconButton:
                text: "[u]Reset password[/u]"
                icon: 'email-send-outline'
                markup: True
                color: Window.clearcolor
                opposite_colors: True
                pos_hint: 'center_x':.8, 'center_y':.8    
        TextInput:
            id: password_jbsidis
            hint_text: "Password"
            foreground_color: [1,1,1,1]
            background_color: [0,0,0,0]
            background_image: ""
            background_normal: ""
            background_active: ""
            multiline: False
            password: True
            size_hint: .7 ,.1 #.06
            pos_hint: 'center_x':.5, 'center_y':.65
            canvas.before:
                Color:
                    rgba: root.highlight_color2jbsidis if root.ids.password_jbsidis.focused else [1,1,1,.5]
                RoundedRectangle:
                    size: self.size
                    pos: self.pos
                    radius: 10,
        FloatLayout:
            MDIconButton:
                icon: 'lock-outline'
                markup: True
                color: Window.clearcolor
                opposite_colors: True
                pos_hint: 'center_x':.8, 'center_y':.65
        MDIconButton:
            id: jbsidis_s
            text: "[u]Reset password[/u]"
            icon: 'lock-open-outline'
            markup: True
            color: Window.clearcolor
            pos: password_jbsidis.pos[0]+password_jbsidis.size[0], password_jbsidis.pos[1]+dp(4)
            pos_x: password_jbsidis.pos[0]
            opposite_colors: True
        MDRaisedButton:
            id: jbsidis_i
            text: "Sign In"
            pos_hint: "center_x": .5, "top": .5
        MDRaisedButton:
            id: button_jbsidis
            text: "Sign up"
            size_hint: .2 ,.05
            pos_hint: "right": .85, "center_y": .1
            opacity: 0
            disabled: True
            bg_color: (0,0,0,1)
            color: [0,0,0,1] 
"""
jbsidis_Josue_Carranza().run()

图片:

【讨论】:

感谢您提供额外的指导,这些信息对我有很大帮助。非常感谢。【参考方案2】:

我不确定您所说的圆形文本输入是什么意思,但一种使输入类似于椭圆的方法是使用 KivyMD。在 KivyMD 内部有一个叫做 MDTextFieldRound 的东西,它给了你这个。这是一个页面:https://kivymd.readthedocs.io/en/0.104.1/components/text-field/

【讨论】:

链接可能会改变或停止工作。请务必在此处发布完整答案并提供仅供参考的链接。 抱歉

以上是关于Kivy:如何在 kivy 中制作圆角 TextInput?的主要内容,如果未能解决你的问题,请参考以下文章

如何在缩略图库中制作可点击的 kivy 图像

如何在kivy中制作自我更新时钟标签?

如何在kivy中制作圆形进度条?

如何在 Kivy 中制作动态地图视图?

如何在 Kivy 中制作重复的旋转动画?

如何使用 KV 语言在 Kivy 中制作自定义按钮?