Portál AbcLinuxu, 14. května 2024 02:31


Dotaz: Python - obrázek na tlačítku

11.3.2017 19:05 michal
Python - obrázek na tlačítku
Přečteno: 262×
Odpovědět | Admin
Příloha:
Python gtk3 vždy udělá okolo obrázku na tlačítku škaredý šedivý 4px okraj. Viz příloha.

ReliefStyle na to nema žádný vliv. Vyřešit to nelze ani změnou rozměrů obrázku či tlačítka.

Jak se toho škaredého okraje zbavit ?

# relevantní část kódu gtk3
button = Gtk.Button()
button.set_image(image)
button.set_relief(Gtk.ReliefStyle.NONE)
grid.attach(button, 0, 0, 1, 1)

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

11.3.2017 19:52 Dušan Kreheľ | skóre: 9 | blog: krehel_sk___informovat_o_novych_verziach_softveru | Prešov
Rozbalit Rozbalit vše Re: Python - obrázek na tlačítku
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zmeň defaulnú hodnotu metodou set_border_width(width).
12.3.2017 02:20 michal
Rozbalit Rozbalit vše Re: Python - obrázek na tlačítku
To bylo u gtk2.

U gtk3 button.set_border_width(width) nefunguje.
12.3.2017 12:30 Dušan Kreheľ | skóre: 9 | blog: krehel_sk___informovat_o_novych_verziach_softveru | Prešov
Rozbalit Rozbalit vše Re: Python - obrázek na tlačítku
Odpovědět | | Sbalit | Link | Blokovat | Admin
#!/usr/bin/python3
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk

win = Gtk.Window()

# The Button

grid = Gtk.Grid()
win.add(grid)

button_top = Gtk.Label("")

button1 = Gtk.Button();
image = Gtk.Image.new_from_file("/tmp/image.png");
button1.set_name('img-left')
button1.add(image)

button2 = Gtk.Button()
button2.set_name('img-right')
image = Gtk.Image.new()
image.set_from_file("/tmp/image.png")
button2.add(image)

grid.attach(button_top, 0, 0, 1, 1)
grid.attach(button1, 0, 1, 1, 1)
grid.attach(button2, 1, 1, 1, 1)

win.connect("delete-event", Gtk.main_quit)

style_provider = Gtk.CssProvider()

css = """
#img-left {
    border: solid black 1px;
    margin: 5px;
    margin-right: 10px;
    padding: 0px;
}
#img-right {
    border: solid black 1px;
    margin: 5px;
    margin-left: 10px;
    margin-right: 5px;
    padding: 0px;
}
"""

style_provider.load_from_data(css)

Gtk.StyleContext.add_provider_for_screen(
    Gdk.Screen.get_default(), 
    style_provider,     
    Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION
)

win.show_all()
Gtk.main()

12.3.2017 14:18 michal
Rozbalit Rozbalit vše Re: Python - obrázek na tlačítku
Dík, dobře si to obešel použitím css.

Ještě prosba. Jak by šla zrušit reakce tlačítka (zvýšení jasu) při najetí myší na obrázek ? Prostě, aby se obrázek při najetí myši vůbec nijak nezměnil.
12.3.2017 14:31 Dušan Kreheľ | skóre: 9 | blog: krehel_sk___informovat_o_novych_verziach_softveru | Prešov
Rozbalit Rozbalit vše Re: Python - obrázek na tlačítku
1) Zmeň si systémovú tému pre GTK.
2) Napíš vlastnú GTK tému.
3) Definuj striktne v programe správanie (napr. cez CSS) bez závistlosti na téme systému. ... hm, mení rgba obrázka alebo pridavá pliehnadnú vrstvu?
12.3.2017 14:34 Dušan Kreheľ | skóre: 9 | blog: krehel_sk___informovat_o_novych_verziach_softveru | Prešov
Rozbalit Rozbalit vše Re: Python - obrázek na tlačítku
4) Prográm nech používa nejakú už existujúcu so sebou nosenú tému, ktorá je no-efect.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.