2015-04-15 16 views
-1

我剛剛用Python編寫了一個程序。該程序做如下:在python中添加一個圖形界面(Tkinter)到這個程序中?

有一個類叫做原創。它有2種方法(init的一部分)。第一種方法是代碼。 「代碼」的作用是接收一個字符串並對其進行編碼,將接收到的字符串中的每個字符更改爲ASCII表的另一個字符。這個ASCII字符取決於函數generacion_clave。函數generacion_clave隨機生成1到k之間的數字(k是該函數的輸入參數)。

例如,字符「e」在ASCII表中的位置101。因此,如果生成的數字是8,那麼字符e將改變爲位置爲109(101 + 8)的ASCII表格中的字符。方法decode將接收到編碼的字符串和clave,並返回解碼後的串。

我想什麼做的是添加到程序中包含的圖形界面:(?或輸出框)

原來的字符串,Canvas中輸入框,其中編碼和解碼字符串我們如圖所示,一個編碼按鈕和一個解碼按鈕。

我在Python中很新,我已經閱讀了關於Tkinter的一些教程,但是我一點都不覺得簡單。所以我會很感激任何幫助:)

from random import randint 

class original(): 

def __init__(self, mensaje_original): 
    self.mensaje_original = mensaje_original 


def code(self, gen_clav, *args): 
    cadena_codificada ="" 
    clave = gen_clav(*args) 
    for i in self.mensaje_original: 
     clave_mod = ord(i) + clave 
     if clave_mod > 255: 
      clave_mod = clave_mod - 255 

     cadena_codificada = cadena_codificada + chr(clave_mod) 

    return cadena_codificada, clave  

def decode(self, cadena_cod_clave): 
    cadena_decodificada ="" 
    clave = int(cadena_cod_clave[1]) 
    for i in cadena_cod_clave[0]: 
     clave_mod = ord(i) - clave 
     if clave_mod > 255: 
      clave_mod = clave_mod - 255 
     cadena_decodificada = cadena_decodificada + chr(clave_mod)   

    return cadena_decodificada, cadena_cod_clave[1]  

def generacion_clave(k): 
cl = randint(1, k + 1) 
return cl 


mensaje_original = "Hola tio como estas" 
mensaje = original(mensaje_original) 
cad_cod_clav = mensaje.code(generacion_clave, 10) 


cad_dec_clav = mensaje.decode(cad_cod_clav) 
print "La cadena original es: %s" %cad_dec_clav[0] 
print "La cadena cifrada es: %s" %cad_cod_clav[0] 
print "la clave es: %d " %cad_cod_clav[1] 

非常感謝提前! Pablo

+1

歡迎來到Stack Overflow。不幸的是,這不是一個免費的代碼編寫服務,所以你應該嘗試自己實現這一點。如果你在實現過程中遇到任何困難,你可以問一個特定的[on-topic](http://stackoverflow.com/help/on-topic)[question](http://stackoverflow.com/help/how-to -問)。 – fhdrsdg

回答

1

用Tk構建GUI並不困難。您需要一個Entry(輸入的Widget),一組標籤(用於打印輸出)和一個Button。

構建主框架和使用入口小部件在這裏提到。 http://www.effbot.org/tkinterbook/entry.htm

我建議你給一個基本的gui一個嘗試(也許在一個單獨的文件中),我們將在GUI完成後連接它們。

如果您需要,我會在創建基本GUI後幫助您進行鏈接。

-2

我試着去做。我開始只添加2個按鈕(編碼和退出)。編碼應調用原始類中的方法編碼,並且Quit應關閉該窗口(其工作)。有人知道爲什麼「編碼」按鈕不起作用嗎?

from random import randint 
from Tkinter import * 


class original(): 

def __init__(self, mensaje_original): 
    self.mensaje_original = mensaje_original 


def code(self, gen_clav, *args): 
    cadena_codificada ="" 
    clave = gen_clav(*args) 
    for i in self.mensaje_original: 
     clave_mod = ord(i) + clave 
     if clave_mod > 255: 
      clave_mod = clave_mod - 255 

     cadena_codificada = cadena_codificada + chr(clave_mod) 
    print cadena_codificada, clave 
    return cadena_codificada, clave  

def decode(self, cadena_cod_clave): 
    cadena_decodificada ="" 
    clave = int(cadena_cod_clave[1]) 
    for i in cadena_cod_clave[0]: 
     clave_mod = ord(i) - clave 
     if clave_mod > 255: 
      clave_mod = clave_mod - 255 
     cadena_decodificada = cadena_decodificada + chr(clave_mod)   

    return cadena_decodificada, cadena_cod_clave[1]  

def generacion_clave(k): 
    cl = randint(1, k + 1) 
    return cl 


class graficos: 

    def __init__(self, master): 
    frame = Frame(master) 
    frame.pack() 
    self.encode_buttom = Button(frame, text = "Encode!", command = self.printMessage) 
    self.encode_buttom.pack(side = LEFT) 

    self.quit_buttom = Button(frame, text = "Quit", command = frame.quit) 
    self.quit_buttom.pack(side = LEFT) 

def printMessage(self): 
    mensaje_original = "Hola tio como estas" 
    mensaje = self.original(mensaje_original) 
    print mensaje 



root = Tk() 
root.geometry("250x250") 

b = graficos(root) 
root.mainloop() 

非常感謝。 Registers Pablo

+0

代碼的某些部分應該移動到正確的方向。我只是複製不正確,但我認爲這是很清楚的。再次感謝 –

+0

,請不要在答案部分擴展您的問題。答案部分嚴格用於解答您的問題。如果您有其他要添加的信息,則可以編輯原始問題。 –

相關問題