2016-09-13 4 views
2
from pubnub import Pubnub ; 
from tkinter import * 

Window = Tk() 
pubnub = Pubnub(publish_key="pub-c-9997b5b1-da6f-4935-88f7-4d0645bcdf2b", 
    subscribe_key="sub-c-2bc2a578-776c-11e6-9195-02ee2ddab7fe") 

def Callback(message, channel): 
    Logic.UpdateMessageList(message) 
    Logic.UpdateMessageDisplay() 
    Display.DisplayMessage() 

def Error(message): 
    Window.title("PubNub - Error") 

def Connect(message): 
    Window.title("PubNub - Connected") 

def Reconnect(message): 
    Window.title("PubNub - Reconnected") 

def Disconnect(message): 
    Window.title("PubNub - Disconnected") 

def SendMessage(event): 
    message = (Logic.Username, Display.MessageEntry.get()) 
    pubnub.publish("my_channel", message = message) 

pubnub.subscribe(channels='my_channel', 
         callback = Callback, 
         error = Error, 
         connect = Connect, 
         reconnect = Reconnect, 
         disconnect = Disconnect) 

class Logic: 
    def __init__(self): 
     self.Username = "" 
     self.MessageList = ([],[]) 
     self.MessageNumber = 0 
     self.MaxMessages = 6 

    def UpdateMessageList(self, message): 
     self.MessageList[0].append(message[0]) 
     self.MessageList[1].append(message[1]) 
     self.MessageNumber += 1 

    def UpdateMessageDisplay(self): 
     self.DisplayList = [] 
     if self.MessageNumber >= (self.MaxMessages + 1): 
      self.MessageList[0].pop(0) 
      self.MessageList[1].pop(0) 

     for Num in range(len(self.MessageList[0])): 
      for ListNum in range(2): 
       self.DisplayList.append((self.MessageList[ListNum][Num])) 
       self.DisplayList.append("\n") 

Logic = Logic() 

class MainDisplay: 
    def __init__(self): 
     Window.geometry("400x400") 
     Window.resizable(0,0) 
     self.MessageVar = StringVar() 
     Window.title("PubNub") 

def ScreenOne(self): 
    Window.bind("<Return>", self.AdvScreenTwo) 

    self.EasyFrame = Frame(Window) 
    self.EasyFrame.config(bg = "Grey", height = 400, width = 400) 
    self.EasyFrame.grid() 
    self.EasyFrame.place(relx = 0.5, y = 200, anchor = CENTER) 

    self.UsernameEntry = Entry(self.EasyFrame) 
    self.UsernameEntry.config(width = 15, bg = "White", fg = "Black") 
    self.UsernameEntry.grid() 
    self.UsernameEntry.place(relx = 0.5, y = 200, anchor = CENTER) 

    UsernameLabel = Label(self.EasyFrame, text = "Enter Username") 
    UsernameLabel.config(bg = "Grey", bd = 0, font = ("times",13,"bold"), fg = "White") 
    UsernameLabel.grid() 
    UsernameLabel.place(relx = 0.5, y = 90, anchor = CENTER) 

def AdvScreenTwo(self, event): 
    Logic.Username = (self.UsernameEntry.get()) 
    Window.unbind("<Return>") 
    self.EasyFrame.grid_forget() 
    self.EasyFrame.destroy() 
    Window.bind("<Return>", SendMessage) 
    self.ScreenTwo() 

def ScreenTwo(self): 
    self.MessagesParent = Frame(Window) 
    self.MessagesParent.config(bg = "Grey", height = 400, width = 400) 
    self.MessagesParent.grid() 
    self.MessagesParent.place(relx = 0.5, y = 200, anchor = CENTER) 

    self.MessageEntry = Entry(self.MessagesParent) 
    self.MessageEntry.config(width = 40, bg = "Grey", fg = "Black") 
    self.MessageEntry.grid() 
    self.MessageEntry.place(relx = 0.5, y = 350, anchor = CENTER) 

def DisplayMessage(self): 
    Y = 10 
    for Item in (Logic.MessageList[0]): 
     self.TextLabel = Label(Window, text = Item, height = 3, width = 6, font = ("times", 8, "bold"), anchor = "w") 
     self.TextLabel.grid() 
     self.TextLabel.place(relx = 0.05, y = Y) 
     Y += 50 
    Y = 10 
    for Item in (Logic.MessageList[1]): 
     self.TextLabel = Label(Window, text = Item, height = 3, width = 40, font = ("times", 8, "bold"),wraplength = 270, anchor = "w") 
     self.TextLabel.grid() 
     self.TextLabel.place(relx = 0.2, y = Y) 
     Y += 50 

Display = MainDisplay() 

def Main(): 
    Display.ScreenOne() 

if __name__ == "__main__": 
    Main() 

Window.mainloop() 

Это мой код, который делает работу, когда я запускаю его через консоль или IDLE, который хорошо и все, но я хотел бы составить Это. Мне удалось скомпилировать его с моим обычным методом с использованием cx_freeze, но я получаю сообщение об ошибке:Составитель - OSError: Не удается загрузить собственный модуль «Cryptodome.Cipher._raw_ecb»

OsError: Cannot load native module 'Cryptodome.Cipher,_raw_ecb' 

Может предоставить любую дополнительную информацию, которая может потребоваться.

+0

Вы видели это? https://github.com/PokemonGoF/PokemonGo-Bot/issues/671 Такая же проблема при переключении с Python 32-бит на 64 бит. Читайте темы для подробностей. –

+0

Я видел это и пробовал как на 64 бит, так и на 32 бит. Я не пробовал с 2.7, поскольку я не думал, что это будет иметь значение, но я попробую, когда вернусь домой. –

+0

2.7 Я получаю сообщение об ошибке во время работы на idle instad после компиляции –

ответ

0

получил изрядное количество просмотров, так что я думал, я бы разместить ответ, я послал по электронной почте поддержку pubnub

Hi Joshua, 

Please use this branch from our SDK https://github.com/pubnub/python/tree/reduce_crypto ; it has cryto unbundled from the dependencies. 

Это установил ее :) (Заменить файл pubnub в Pythonx.x с pubnub.py файл на git)

 Смежные вопросы

  • Нет связанных вопросов^_^