• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Tkinter button z własną teksturą

Object Storage Arubacloud
0 głosów
1,138 wizyt
pytanie zadane 6 października 2019 w Python przez plebaniahobbitanow Początkujący (470 p.)
zamknięte 13 października 2019 przez plebaniahobbitanow
Wiem moje pytanie może wydawać się dziwne... ale czy jest możliwe stworzenie przycisku z przestrzenią do rysowania w środku w bibliotece tkinter do pythona? Bo potrzebuję guziczki z dedykowanymi teksturami. W ostateczności jeśli się tak nie da użyję obrazków, jednak że fajnie by było generować teksturę guziczków z poziomu kodu.
komentarz zamknięcia: Zmiana treści

1 odpowiedź

0 głosów
odpowiedź 6 października 2019 przez sysadmin Obywatel (1,000 p.)
wybrane 13 października 2019 przez plebaniahobbitanow
 
Najlepsza

Dokumentację masz tutaj: http://effbot.org/tkinterbook/button.htm

Przykład prostego przycisku. Opcji jest więcej:

from tkinter import *

root = Tk()

button = Button(root, text="Click me!")
img = PhotoImage(file="C:/path to image/example.gif") # make sure to add "/" not "\"
button.config(image=img)
button.pack() # Displaying the button

root.mainloop()

Parę stron:

https://www.geeksforgeeks.org/python-add-style-to-tkinter-button/

https://www.python-course.eu/tkinter_buttons.php

Tutorial: https://www.lynda.com/Python-tutorials/Python-GUI-Development-Tkinter/802858-2.html

komentarz 6 października 2019 przez plebaniahobbitanow Początkujący (470 p.)
Dziękuje za szybką odpowiedź ale chodziło mi o to, żebym mógł "rysować do guziczka" z poziomu kodu. O możliwości ustawienia guziczkowi zdjęcia wiedziałem już wcześniej.
komentarz 6 października 2019 przez sysadmin Obywatel (1,000 p.)

Znalazłem tylko to: http://zetcode.com/tkinter/drawing/

Niestety nie umiem odpowiedzieć na pytanie. Możliwe, że musisz osadzić jedno wewnątrz drugiego. Zobacz tę stronę i się zastanów, czy możesz obrazek jakoś jako teksturę wykorzystać. Jakbyś chciał generować teksturę, musiałbyś mieć funkcję, która ją generuje i zapisuje do obrazka, albo rysuje teksturę wewnątrz kanwy (krawędzi). Czyli musiałbyś zmienić funkcję wypełniającą, aby to ona była użyta zamiast obrazka. Niestety nie programuję, tylko ogarniam Linuxy.

komentarz 13 października 2019 przez plebaniahobbitanow Początkujący (470 p.)

Sory za opóźnienie ale dzięki za pomysł skorzystałem, z tym że teraz mam problem z wygenerowaniem z poziomy pythona obrazka z przezroczystym tłem, używam (a przynajmniej próbuje) w tym celu biblioteki pygame, ale niestety wygenerowane przezemnie obrazki mają tło czarne... Daje kod którym je generuje byłbym bardzo wdzięczny za pomoc

# !/usr/bin/python3
import pygame as pg
def resize_components(_w, _h):
    _w=_w
    _h=_h
    green=(0, 100, 0) #rgb
    sur=pg.Surface((_w, _h))
    pg.draw.line(sur, green, (0,0), (_w,0))
    pg.draw.line(sur, green, (_w-1,0), (_w-1,_h))
    pg.draw.line(sur, green, (_w,_h-1), (0,_h-1))
    pg.draw.line(sur, green, (0,_h), (0,0))
    fname = "d_rezistor.png"
    pg.image.save(sur, fname)

resize_components(100, 100)

 

komentarz 13 października 2019 przez plebaniahobbitanow Początkujący (470 p.)
Postanowiłem przenieść pytanie do nowego wątku jako że jego treść się zmieniła dziękuję za pomoc
komentarz 13 października 2019 przez plebaniahobbitanow Początkujący (470 p.)
Natknąłem się na tą funkcję kilka razy szukając rozwiązania jednak nie udało mi się zrozumieć jej działania (powinienem chyba dodać że o ile z programowaniem mam trochę doświadczenia, tak z pythonem żadnego)
komentarz 13 października 2019 przez sysadmin Obywatel (1,000 p.)
edycja 13 października 2019 przez sysadmin

To się opiera na Sprite, podobnie jak w Java. Postaram się wyjaśnić, bo iem, jak to działa w Java, ale tez musiałbym to na spokojnie przeanalizować. Sprites rysują warstwy, jedna na drugiej, jak w Photoshop. I teraz kwestia jest tylko taka, aby rysować je w odpowiedniej kolejności, na sam spód powinno iść przezroczyste tło, na to obrazek a na samą górę tekst. W przypadku gry w Java robisz mapę planszy na przykład złożoną z pikseli w różnych kolorach. Potem piszesz kod, który pikselowi o danym kolorze przypisuje teksturę i w ten sposób w miejsce niebieskiego piksela nakładana jest tekstura z wodą, w miejsce brązowego np. drzewa itd. Tutaj działa to analogicznie. Jest gdzieś na youtube java tutorial jak się grę pisze i w jaki sposób tekstura z postacią ma nadawaną przezroczystość, bo jest wyżej na tle tekstur pod spodem, po których się porusza.
https://www.youtube.com/watch?v=his__vfqP2s

Mam gdzieś nawet kod od tego, jakbyś chciał.

Ewentualnie obejrzyj to: https://www.youtube.com/watch?v=j1KSjdjxcnA

W tym wideo masz konwersję obrazka do obrazka z przezroczystym tłem.

komentarz 13 października 2019 przez plebaniahobbitanow Początkujący (470 p.)
Dzięki za wytłumaczenie, ale czego bym nie robił uzyskuje błąd

cannot convert without pygame.display initialized

co jest dla mnie problematyczne, bo nie chcę tworzyć okna
komentarz 13 października 2019 przez sysadmin Obywatel (1,000 p.)

Nie znam tej biblioteki, ale weryfikując na szybko ten wątek, stwierdzam, że okno musi powstać, aby w nim rysować.

https://stackoverflow.com/questions/37095139/cannot-convert-without-pygame-display-initialized-error-in-pygame

komentarz 13 października 2019 przez plebaniahobbitanow Początkujący (470 p.)
To może masz jakąś propozycję jak z poziomu pythona wygenerować proste obrazki (symbole schematyczne kondensatora i opornika czyli prosty prostokąt i 4 kreski) na przezroczystym tle?

Podobne pytania

0 głosów
1 odpowiedź 306 wizyt
0 głosów
1 odpowiedź 609 wizyt
pytanie zadane 4 listopada 2020 w Python przez Jaksa1703 Nowicjusz (200 p.)
0 głosów
0 odpowiedzi 85 wizyt

92,555 zapytań

141,403 odpowiedzi

319,554 komentarzy

61,939 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...