簡體   English   中英

如何調整 kivy 中的圖片大小?

[英]How can I resize a picture in kivy?

我正在使用 kivy 並且我正在嘗試制作一個程序來幫助我記住超級賽亞人的轉換。 我希望按鈕是圖片而不是文字。 所以這是我用來制作按鈕圖片的代碼:

self.Goku = Button(background_normal = '106-1060675_goku-base-form-png-clipart (1).png')
self.Goku.bind(on_press = self.SonGoku)
self.add_widget(self.Goku)

當我運行代碼查看它的樣子時,我看到其中一張圖片大而另一張圖片小。 所以我嘗試通過添加 size = ("10, 10") 來調整圖片大小,但它沒有用。 我用 size_hint 嘗試了同樣的事情,但結果相同。 什么都沒有動。 我查看了一些有關該按鈕的文檔並將圖片添加到 kivy 但這並沒有太大幫助。 這是整個代碼:

import kivy
from kivy.app import App
from kivy.graphics import *
from kivy.uix.label import Label
from kivy.uix.image import Image
from kivy.uix.button import Button
from kivy.uix.widget import Widget
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.gridlayout import GridLayout

class main(GridLayout):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)

        self.cols = 4

        self.Goku = Button(background_normal = '106-1060675_goku-base-form-png-clipart (1).png', size_hint = (1, 0.5))
        self.Goku.bind(on_press = self.SonGoku)
        self.add_widget(self.Goku)

        self.Vegeta = Button(background_normal = 'vegeta-png-clip-art.png', size_hint = (1, 1))
        self.Vegeta.bind(on_press = self.PrinceVegeta)
        self.add_widget(self.Vegeta)

    def SonGoku(self, instance):
        self.cols = 1

        self.remove_widget(self.Goku)
        self.remove_widget(self.Vegeta)

        self.NormalGoku = Button(text = "Base form")
        self.add_widget(self.NormalGoku)
        self.SSJGoku = Button(text = "Super saiyan")
        self.add_widget(self.SSJGoku)
        self.SSJ2Goku = Button(text = "Super saiyan 2")
        self.add_widget(self.SSJ2Goku)

    def PrinceVegeta(self, instance):
        self.cols = 1

        self.remove_widget(self.Goku)
        self.remove_widget(self.Vegeta)

        self.NormalVegeta = Button(text = "Base form")
        self.add_widget(self.NormalVegeta)
        self.SSJVegeta = Button(text = "Super saiyan")
        self.add_widget(self.SSJVegeta)
        self.SSJ2Vegeta = Button(text = "Super saiyan 2")
        self.add_widget(self.SSJ2Vegeta)

class Saiyan(App):
    def build(self):
        return main()

if __name__ == "__main__":
    Saiyan().run()

幫助將不勝感激。 隨時問任何問題。 提前致謝。

一種方法是在按鈕 canvas 上繪制圖像。 屬性“allow_stretch”和“keep_ratio”用於填充整個按鈕大小。

from kivy.uix.image import Image

然后:

self.Goku = Button(size_hint=(None, None), size=(120,120))
with self.Goku.canvas:
    Image(source='vegeta-png-clip-art.png', size=self.Goku.size, pos=self.Goku.pos, allow_stretch=True, keep_ratio=False)
self.add_widget(self.Goku)

如果您沒有為按鈕顯式設置大小,則需要將 size 屬性綁定到方法以調整圖像大小。

例子:

class main(GridLayout):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)

        self.cols = 4
        self.Goku = Button()
        with self.Goku.canvas:
            self.Goku_img = Image(source='vegeta-png-clip-art.png', size=self.Goku.size, pos=self.Goku.pos, allow_stretch=True, keep_ratio=False)
        self.Goku.bind(size=self.adjust_size)
        self.add_widget(self.Goku)

...

    def adjust_size(self, instance, value):
        self.Goku_img.size = value

我希望這是適合您的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM