dowiedziałem się, że w Qt mamy kilka sposobów, aby dokonać QPushButton z:Zmiana tła przycisku na inny kształt i stylów, takich jak efekt cienia itp w kivy pytona
- efekt cienia
- czyni go Płasko dzięki ustawieniu właściwości setFlat na True.
- chaning kursor innego rodzaju, jeżeli ktoś unosi się nad nim jak pushButton_18.setCursor (QtGui.QCursor (QtCore.Qt.PointingHandCursor))
szukam aby Przyciski zachowania podobnego w kivy również. Czy to możliwe ? dowiedziałem się, że możemy zmienić obraz tła zmienił się obraz z zaokrąglonym kształcie Changing the background color of a Button in Kivy
ale to nie jest tak satysfakcjonujące jak przycisk nadal wygląda bardzo normalne. Nie ma wpływu cienia. Nawet gdy klikniemy rogi poza przyciskiem, zostanie to potraktowane, jeśli kliknięty zostanie przycisk.
Przeszedłem przez dokumentację Kivy Button oraz etykiety i próbowałem zmienić zachowanie i wygląd przycisku. Rada może ktoś jak zrobić wygląd przycisku lepiej Możemy starać się mieć:
- Shadowing wpłynąć
- Animacja wpływa w tle
- zaokrąglone krawędzie itp.
- możemy umieścić animowane GIF jako tła dla animacji (I nie spróbować, ale to nie było animowane więcej)
Poniżej znajduje się kod, który ja po prostu stworzony do odkrywania więcej na guziki w Kivy:
__author__ = 'pbatra'
#Good info about background
#https://stackoverflow.com/questions/20181250/changing-the-background-color-of-a-button- in-kivy/20181407#20181407
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import ObjectProperty
from kivy.uix.image import Image
from kivy.graphics import Color
gui = '''
<MenuScreen>:
canvas.before:
BorderImage:
# BorderImage behaves like the CSS BorderImage
border: 10, 10, 10, 10
texture: self.background_image.texture
pos: self.pos
size: self.size
GridLayout:
size_hint: .1, .1
pos_hint: {'center_x': .5, 'center_y': .5}
rows: 1
Button:
text: 'Play'
font_size: 20
font_name: 'DroidSans'
bold: True
italic: True
height: 10
background_color: (0.5, 0.7, 0.5, 0.9)
#Read more about them from documentation
background_normal: './images/orange.png'
background_down: './images/green.png'
border: 30,30,30,30
color: (1, .3, .8, .5)
on_press: self.text = 'Oh yeah'
'''
class MenuScreen(Screen):
background_image = ObjectProperty(
Image(
source='../Examples/examples/widgets/sequenced_images/data/images/button_white_animated.zip',
anim_delay=.5))
Builder.load_string(gui)
pass
# Create the screen manager
sm = ScreenManager()
sm.add_widget(MenuScreen(name='menu'))
class MyJB(App):
def build(self):
return sm
if __name__ == '__main__':
MyJB().run()
Twoja odpowiedź jest bardzo przydatna i pomogła. Nadal staram się zrozumieć, że gdy próbowałem użyć obrazu .gif dla background_normal i background_down, to nie pokazywałem animacji, ale na swój sposób pokazano animację. Nadal próbuję nauczyć się efektu Cienia z twojego wpisu. Czy wiesz, dlaczego .gif nie działało dla background_normal lub background_down. –
Przycisk domyślnie używa tylko instrukcji wierzchołków .. BorderImage do rysowania jego płótna, który ładuje i wyświetla statyczny (nie obsługuje animacji, musisz obsługiwać go ręcznie). Image Widget ma jednak wsparcie dla otrzymywania gifu lub pliku .zip z obrazkami, które animuje. –