TL;DR: Pmw to biblioteka, która usprawnia i uprzyjemnia pracę z Tkinterem dając przy tym lepsze efekty. Bardziej rozbudowane elementy przy mniejszym nakładzie pracy. Dowiedziałem się o niej dzięki komentarzowi. One mocno pomagają nowicjuszowi.

Dziel się wiedzą

Proszę komentujcie, podpowiadajcie, bo dla nowicjusza jeden komentarz może pomóc odkryć całe pole możliwości. Dzięki mdobrychlop za ten komentarz. Tak oto poznałem Pmw! To tak jakbym przesiadł się z pociągu osobowego na pośpieszny.

Pmw – Python Mega Widgets to biblioteka oparta na Tkinterze, która bardzo przyspiesza pracę, bo zawiera połączenie kilku widgetów Tkinterowych. Dzięki temu można np. za jednym zamachem stworzyć listbox z paskiem przewijania lub np. pole do inputu wymuszające wpisanie godziny!

Zasada działania jest bardzo prosta, jeśli ogarniasz Tkintera to umiesz Pmw. Jeśli czujesz, że to dla ciebie to przejrzyj dokumentację, bo jest bardzo prosto napisana z przykładami i printscreenami efektów.

Oto moje efekty:

Screenshot from 2017-04-28 15-34-39croped

Dla mnie najbardziej przydatne okazały się dwie rzeczy:

  1. Pole inputu, które wymaga, aby użytkownik wpisał godzinę, którego wartość można dodatkowo zwiększać lub zmniejszać strzałkami. Pmw.counter to w ogóle morze możliwości. Pozwala on na określenie rodzaju wprowadzanych danych jako czas, data lub liczby całkowite. Koloruje tło w razie błędnego inputu oraz ma inne fajne wizualne, ale też praktyczne usprawnienia.
  2. Radio Select Buttons czyli przyciski z których tylko jeden (lub wiele) może być wciśnięty na raz. Dzięki temu wygląda to super a jednocześnie umożliwia wybór rodzaju wprowadzanych wartości pomiędzy czasem jazdy, pracy, dyspozycyjności i odpoczynku.

A to wszystko dzięki paru linijkom kodu. Dużo czasu i frustracji zaoszczędzone.

Jak w ogóle zacząć?

Żeby móc korzystać z tych pakietów/packages trzeba je najpierw zainstalować. Można to zrobić na piechotę ściągając plik i instalując przez konsolę, ale po co sobie utrudniać. Można również to zrobić z poziomu PyCharm.

Tu na chwilę się zatrzymam i szczerzę polecę ci ten program. Za każdym razem odkrywam jego nowe możliwości i to w jaki świetny sposób został zaprojektowany. Jak jesteś początkujący, nie potrzebujesz niczego innego. Wystarczy ci darmowa wersja PyCharm. Nawet GITa da się z jego poziomu ogarniać. Super!

Instalacja pakietów z poziomu PyCharma

File > Settings > z listy wybieramy Project oraz Project Interpreter a zielonym plusem po prawej stronie dodajemy packages wyszukując je bezpośrednio z poziomu PyCharma. Czy to nie piękne?

P. S. Przy instalacji spotkałem się z błędem:

Error: Python packaging tool ‚pip’ not found

Ja korzystam z Pythona 3.5 i pomimo, że ‚pip’ powinien być zainstalowany i działać to musiałem go jednak zainstalować wpisując do konsoli:

sudo apt-get install python3-pip

I to wszystko. Można już wprowadzać nowe funkcjonalności. Importujemy Pmw:

import Tkinter
win = Tkinter.Tk()
import Pmw
Pmw.initialise(win)

A tak wygląda konstruowanie megawidgetu na przykładzie countera:

counter2 = Pmw.Counter(
    datatype = 'time', # określamy rodzaj wartości, np. czas
    increment = 60) # określamy o ile ma się zwiększać lub zmniejszać po naciśnięciu strzałek
counter2.setentry('00:00:00') # ustawiamy konkretną wartość domyślną
counter2.pack(padx = 10, pady = 10) # 'pakujemy' lub 'gridujemy' jak wszystko inne w Tkinterze

Pacjent przeżył

Przyznaję, że jeszcze dobrze nie wprowadziłem klas a już zabrałem się za coś nowego. Tzn. jedna klasa jest, ale cały koncept klas i wdrożenia ich do projektu, aby to było z sensem i głową jeszcze przede mną. Rozumiem czym jest klasa na przykładzie klienta banku czy innych porównań, ale do końca jeszcze nie czaję co powinno być u mnie klasą a co nie.

Chciałem jednak wypróbować Pmw i zobaczyć jak to będzie u mnie działać. A ponadto zanim zacznę ogarniać kod to chciałem podmienić to co podmienione przez Pmw i tak by było.

Tak powstał mega chaos w kodzie, ale jednocześnie funkcje życiowe są zachowane, nowe funkcjonalności wprowadzone a całość wygląda już naprawdę dobrze! Pacjent jeszcze leży, ale rokowania są obiecujące.

W następnym wpisie pokażę go wraz z opisem co i po co jest napisane, bo bez instrukcji obsługi pewnie nikt tego kodu nie przetrawi. Taka instrukcja przyda się także mnie, kiedy będę ten kod czyścił i przerabiał. Jeśli zabrnąłeś aż tu to zapraszam również do kolejnego wpisu, bo warto dzielić się wiedzą jak pokazuje historia tego posta.

2 uwagi do wpisu “Python Mega Widget – historia jednego komentarza

  1. Wybacz brak odpowiedzi! Przytłoczyły mnie niestety pozakonkursowe obowiązki i musiałem pominąć komunikat o Twoim poście. Gratuluję przede wszystkim ukończenia DSP! No i bardzo się cieszę, że mój mały komentarz okazał się pomocny 🙂

    Polubienie

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj /  Zmień )

Zdjęcie na Google

Komentujesz korzystając z konta Google. Wyloguj /  Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj /  Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj /  Zmień )

Połączenie z %s