SAMOUCZEK JĘZYKA PYTHON ROZDZIAŁY   
Rozdział 9: Przykłady praktycznego zastosowania

Graficzny interfejs użytkownika(GUI) oraz Sockets.


Lekcje samouczka pokazują podstawy programowania w Pythonie, a przykłady z których korzystaliśmy nie było zbytnio skomplikowane. W związku z tym na zakończenie kursu należałoby powiedzieć coś o programowaniu bardziej zaawansowanym.

Python ma bardzo wiele zalet, takich jak:

  • przenoszalność kodu,
  • przejrzysta składnia,
  • pełny zakres typów zmiennych i kolekcji,
  • klasy (OO),
  • GUI (Tkinter),
  • sockets.

Na tych dwóch ostatnich się zatrzymamy.

GUI

Dzięki możliwości obsługi przez Pythona graficznego interfejsu użytkownika możliwa jest obróbka graficzna, a także tworzenie obiektów graficznych. Przykładem może być poniższy obrazek.


Z lewej strony mamy gotowy obrazek, który jest niezbyt ostry. Dzięki odpowiedniemu programowi możemy uzyskać lepszy efekt, który widoczny jest po prawej stronie.






Uzysujemy to dzięki następującym poleceniom:
# histogram equalization

import operator

def equalize(h):

    lut = []

    for b in range(0, len(h), 256):

        # step size
        step = reduce(operator.add, h[b:b+256]) / 255

        # create equalization lookup table
        n = 0
        for i in range(256):
            lut.append(n / step)
            n = n + h[i+b]

    return lut

Sockets

Sockets są używane w sieci. Dzięki nim możliwa jest komunikacja sieciowa pomiędzy klientem a serwerem. Konwersacja pomiędzy socketem klienta i socketem serwera odbywa się na zasadzie "peer to peer". Normalnie połączenie sockets rozpoczyna konwersacje. Polega to na przesyłanie różnych informacji i odpowiadaniu na zadane pytania.
Protokół taki jak HTTP używa sockets tylko do transferu.

Poniżej przedstawione są dwa programy, dla klienta i dla serwera, które umożliwiają ich połaczenie.



Dla serwera

# Echo server program
from socket import *
HOST = 'localhost'#Symboliczna nazwa oznaczająca 
local host PORT = 50007 s = socket(AF_INET, SOCK_STREAM) s.bind(HOST, PORT) s.listen(1) print 'Oczekuje na odpowiedz' conn, addr = s.accept() print 'Connected by', addr while 1: data = conn.recv(1024) if not data: break print ' ',data conn.send(data) conn.close()

Dla klienta

# Echo client program
from socket import *
HOST = '127.0.0.1'    # Odległy Host
PORT = 50007          # Ten sam port używany  dla serwera
s = socket(AF_INET, SOCK_STREAM)
s.connect(HOST, PORT)

komunikat='To co tygryski lubia najbardziej'
print ' ',komunikat
s.send(komunikat)
data = s.recv(1024)
s.close()
print ' ',data

Strona główna - O Pythonie - Interpreter - Samouczek - Przykłady programów - Linki