Advertisement
JachyHm

Instant Messaging

Oct 2nd, 2015
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.78 KB | None | 0 0
  1. import socket
  2. from threading import Thread
  3. from gi.repository import Gtk, GObject
  4. from msvcrt import getch
  5.  
  6. class Connection:
  7.     def __init__ (self):
  8.         self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  9.     def rec(self):
  10.         print(self.socket.recv(1024))
  11.     def connect(self, ip, port):
  12.         self.socket.connect((ip,port))
  13.         self.r = Thread(target=self.rec)
  14.         self.r.start()
  15.     def send(self,data):
  16.         self.socket.sendall(bytes(data,'ASCII'))
  17.  
  18. c=Connection()
  19.  
  20. class Okno(Gtk.Window):
  21.    
  22.    
  23.     def __init__(self):
  24.         #Definuje funkci __start__
  25.         Gtk.Window.__init__(self, title="Připojení")
  26.         #Vytvoří okno "Ahoj světe po síti"
  27.         self.set_size_request(300, 100)
  28.         #Definuje velikost 300 na 100 px
  29.  
  30.         vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6)
  31.         self.add(vbox)
  32.         #Vytvoří TextBox
  33.  
  34.         self.entry = Gtk.Entry()
  35.         self.entry.set_text("Sem zadejte IP adresu partnera")
  36.         vbox.pack_start(self.entry, True, True, 0)
  37.         #Nastaví text "Sem zadejte IP adresu partnera"
  38.         #Definuje TextBox viditelnost: true, editovatelnost: true a ta nula nevím co dělá :D
  39.  
  40.        
  41.         button = Gtk.Button.new_with_label("Připoj")
  42.         button.connect("clicked", self.pripoj)
  43.         vbox.pack_start(button, True, True, 0)
  44.  
  45.         button = Gtk.Button.new_with_label("Zavři")
  46.         button.connect("clicked", self.konec)
  47.         vbox.pack_start(button, True, True, 0)
  48.         #Definuje tlačítko "pripoj_cudlo" s textem "přpoj"
  49.         #Při zmáčknutí spustí funkci (self = vlastní, tzn. je definováno v té samé třídě) "odesli_zmack"
  50.         #Definuje čudlo "pripoj_cudlo" s viditelností "true" a zmáčknutelností "true", nula nevím co dělá
  51.  
  52.  
  53.        
  54.         self.ip=""
  55.         #Definuje proměnou ip s hodnotou:
  56.        
  57.  
  58.     def pripoj(self, button):
  59.         self.ip=self.entry.get_text()
  60.         c.connect(self.ip, 62803)
  61.         dialog = PripojeniOK(self)
  62.         response = dialog.run()
  63.         if response == Gtk.ResponseType.OK:
  64.             okno2=Okno2()
  65.             win1.show_all()
  66.         dialog.destroy()
  67.        
  68.        
  69.         #Definuje funkcii "odesli_zmack" navázanou na "pripoj_cudlo"
  70.         #Zapíše do promměnné "ip" hodnotu z pole "ip_vstup"
  71.  
  72.     def konec(self, button):
  73.         Gtk.main_quit()
  74.  
  75. class PripojeniOK(Gtk.Dialog):
  76.  
  77.     def __init__(self, parent):
  78.         Gtk.Dialog.__init__(self, "Oznámení", parent, 0,
  79.              (Gtk.STOCK_OK, Gtk.ResponseType.OK))
  80.  
  81.         self.set_default_size(150, 100)
  82.  
  83.         label = Gtk.Label("Připojení proběhlo v pořádku!")
  84.  
  85.         box = self.get_content_area()
  86.         box.add(label)
  87.         self.show_all()
  88.  
  89. class Okno2(Gtk.Window):
  90.     def enter_klik(self):
  91.             key = getch()
  92.             if key == 13:
  93.                 odesli()
  94.     def okno_start(self):
  95.         #Definuje funkci __start__
  96.         Gtk.Window.__init__(self, title="Instant messaging")
  97.         #Vytvoří okno "Ahoj světe po síti"
  98.         self.set_size_request(300, 100)
  99.         #Definuje velikost 300 na 100 px
  100.  
  101.         vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6)
  102.         self.add(vbox)
  103.         #Vytvoří TextBox
  104.  
  105.         self.entry = Gtk.Entry()
  106.         self.entry.set_text("Sem zadejte zprávu")
  107.         vbox.pack_start(self.entry, True, True, 0)
  108.         #Nastaví text "Sem zadejte IP adresu partnera"
  109.         #Definuje TextBox viditelnost: true, editovatelnost: true a ta nula nevím co dělá :D
  110.  
  111.        
  112.         button = Gtk.Button.new_with_label("Odešli")
  113.         button.connect("clicked", self.odesli)
  114.         vbox.pack_start(button, True, True, 0)
  115.  
  116.         button = Gtk.Button.new_with_label("Zavři")
  117.         button.connect("clicked", self.konec)
  118.         vbox.pack_start(button, True, True, 0)
  119.         #Definuje tlačítko "pripoj_cudlo" s textem "přpoj"
  120.         #Při zmáčknutí spustí funkci (self = vlastní, tzn. je definováno v té samé třídě) "odesli_zmack"
  121.         #Definuje čudlo "pripoj_cudlo" s viditelností "true" a zmáčknutelností "true", nula nevím co dělá
  122.  
  123.  
  124.         Enter=Thread(target=self.enter_klik)
  125.         self.ip=""
  126.         self.zprava=""
  127.         Enter.start
  128.         #Definuje proměnou ip s hodnotou:
  129.  
  130.     def odesli(self, button):
  131.         zprava=self.entry.get_text()
  132.         c.send(zprava)
  133.         self.entry.set_text("")
  134.        
  135.        
  136.         #Definuje funkcii "odesli_zmack" navázanou na "pripoj_cudlo"
  137.         #Zapíše do promměnné "ip" hodnotu z pole "ip_vstup"
  138.  
  139.     def konec(self, button):
  140.         Gtk.main_quit()
  141.  
  142.    
  143.  
  144.  
  145. win = Okno()
  146. win1=Okno2()
  147. win1.okno_start()
  148. win.connect("delete-event", Gtk.main_quit)
  149. win.show_all()
  150. Gtk.main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement