Python Kivy图像按钮拉伸

Python Kivy图像按钮拉伸,python,kivy,Python,Kivy,我想做一个有图像的按钮。然而,图像被拉伸了。有没有一种方法可以使它成为一个“固定位置”,这样每当分辨率改变时,它就不会被拉伸(使用python) 这对我有用 self.add_widget(Button(background_normal=('Image.png'),size=(200,200), size_hint=(None,None),pos_hint={"x":0.3, "top":0.7})) 当然,您可以将(200200)更改为您需要的任何尺寸。这对我很有用 self.add_wi

我想做一个有图像的按钮。然而,图像被拉伸了。有没有一种方法可以使它成为一个“固定位置”,这样每当分辨率改变时,它就不会被拉伸(使用python)

这对我有用

self.add_widget(Button(background_normal=('Image.png'),size=(200,200), size_hint=(None,None),pos_hint={"x":0.3, "top":0.7}))
当然,您可以将
(200200)
更改为您需要的任何尺寸。

这对我很有用

self.add_widget(Button(background_normal=('Image.png'),size=(200,200), size_hint=(None,None),pos_hint={"x":0.3, "top":0.7}))

当然,您可以将
(200200)
更改为您需要的任何维度。

您还可以通过使用Kivy行为模块来完成另一件事

在python文件中:

from kivy.uix.behaviors import ButtonBehavior
from kivy.uix.image import Image

class ImageButton(ButtonBehavior, Image):
    pass

self.add_widget(ImageButton(source=('Image.png'),size=(200,200), size_hint=(None,None),pos_hint={"x":0.3, "top":0.7}))

ImageButton现在可以访问按钮属性(如“on_press”方法)和图像属性(包括“keep_ratio”和“allow_stretch”),默认值为True和False,这是本例中所需的。通过使用Kivy Behaviors模块,您还可以执行另一项操作

在python文件中:

from kivy.uix.behaviors import ButtonBehavior
from kivy.uix.image import Image

class ImageButton(ButtonBehavior, Image):
    pass

self.add_widget(ImageButton(source=('Image.png'),size=(200,200), size_hint=(None,None),pos_hint={"x":0.3, "top":0.7}))

ImageButton现在可以访问按钮属性(如“按下按钮”方法)以及默认为True和False的图像属性(包括“保持比率”和“允许拉伸”),这是本例中所需的属性。

您不能直接为其提供按钮尺寸吗?没有使用
尺寸\u提示
?我不这么认为?你不能直接给出按钮尺寸吗?没有使用
size\u hint
?我不这么认为?我试过了,效果很好,只是当我点击它时什么也没发生。它就像一个图像。你的意思是它不像按钮一样闪烁吗?您必须返回并为每个状态设置一个图像(背景正常、背景关闭、背景正常禁用、背景关闭禁用)。与我之前的回答类似,但是现在图像应该保持其比率,而不管状态如何。我是否会在按下按钮=(“屏幕”)时添加
,以便在单击它时转到该屏幕?屏幕需要屏幕管理器对象来更改屏幕。我有一份千伏档案和所有资料。但我一直在犯这个错误TypeError:uuu init_uuuuuuuuu()接受1个位置参数,但给出了2个-
self.add_小部件(ImageButton(source=('Image.png'),size=(200200),size_hint=(0.2,0.2),on_press=(Screen),pos_hint={“x”:0.3,“top”:0.7})
我尝试了它,它工作正常,但当我单击它时什么都没有发生。它就像一个图像。你的意思是它不像按钮一样闪烁吗?您必须返回并为每个状态设置一个图像(背景正常、背景关闭、背景正常禁用、背景关闭禁用)。与我之前的回答类似,但是现在图像应该保持其比率,而不管状态如何。我是否会在按下按钮=(“屏幕”)
时添加
,以便在单击它时转到该屏幕?屏幕需要屏幕管理器对象来更改屏幕。我有一份千伏档案和所有资料。但我一直在犯这个错误TypeError:uuu init_uuuuuuuu()接受1个位置参数,但给出了2个-
self.add_小部件(ImageButton(source=('Image.png'),size=(200200),size_hint=(0.2,0.2),on_press=(屏幕),pos_hint={“x”:0.3,“top”:0.7})