在python中为这个程序添加一个图形界面(Tkinter)?

时间:2015-04-15 13:32:59

标签: python string python-2.7 tkinter tkinter-canvas

我刚用Python编写了一个程序。该计划执行以下操作:

有一个名为original的类。它有2种方法( init 的一部分)。第一种方法是代码。 “代码”所做的是接收一个字符串并对其进行编码,将接收到的字符串中的每个字符更改为ASCII表的另一个字符。这个ASCII字符取决于函数generacion_clave。函数generacion_clave随机生成1到k之间的数字(k是此函数的输入参数)。

例如,字符“e”位于ASCII表的位置101。因此,如果生成的数字为8,则对于位于109(101 + 8)

位置的ASCII表中的字符,将更改字符e

方法decode接收编码的字符串和clave,并返回解码的字符串。

我想要做的是在程序中添加一个包含以下内容的图形界面:

原始字符串,画布(或输出框?)的输入框,我们将显示编码和解码的字符串,编码按钮和要解码的按钮。

我是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]

提前多多感谢! 巴勃罗

2 个答案:

答案 0 :(得分:1)

使用Tk构建GUI并不困难。

您需要一个条目(输入小工具),一组标签(用于打印输出)和一个按钮。

此处提到构建主框架并使用条目窗口小部件。 http://www.effbot.org/tkinterbook/entry.htm

我建议您尝试一下基本的gui(可能在一个单独的文件中),我们会在GUI完成后链接它们。

如果您需要,我会在创建基本GUI后帮助您完成链接。

答案 1 :(得分:-2)

我试着去做。我开始只添加2个按钮(编码和退出)。 Encode应该调用类original中的方法encode,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()

非常感谢。 问候 巴勃罗