将简单的 gui 添加到我的简单 python 代码中
Adding simple gui to my simple python code
我已经编写了这段 python 代码,并且正在尝试添加一个简单的 GUI。我想使用 GUI 从用户那里获取输入,而不是对输入进行硬编码。
import math
def main():
ciphertext = 'litrutisfgsofnaeeieoitdt'
myKey = 4
plaintext = decryption(myKey, ciphertext)
print(plaintext)
def decryption(key, message):
colNum = math.ceil(len(message) / key)
rowNum = key
shadeNum = (colNum * rowNum) - len(message)
plaintext = [''] * colNum
col = 0
row = 0
for symbol in message:
plaintext[col] += symbol
col += 1
if (col == colNum) or (col == colNum - 1 and row >= rowNum - shadeNum):
col = 0
row += 1
return ''.join(plaintext)
if __name__ == '__main__':
main()
我想从用户输入中获取密文和密钥,并添加一个按钮来完成解密部分并在标签中显示结果。我正在尝试使用 Tkinter 添加 GUI,但老实说,我不知道如何 link 它。我应该怎么做?
如果您只需要动态输入,请使用 raw_input() 函数(只需 input() for python 3)。如果您真的需要 GUI,我只能向您指出内置的 Tkinter 模块,它可能是 python 的(众多)GUI 框架中最简单的。它的文档可以在这里找到:https://docs.python.org/2/library/tkinter.html。我没有必要为您编写完整的代码。它易于学习,如果您遇到困难,请提出更精确的问题,肯定会有人乐于回答。
您可以从 link 使用 UI 中的解密按钮的解密函数的示例代码开始。
逻辑就是给按钮附加一个回调函数。
import Tkinter
from Tkinter import *
def decrypt(key, cyphertext):
# do decryption
return "Decrypted "+key+cyphertext
def callback(cyphertextEntry, keyEntry, output):
cyphertext = cyphertextEntry.get()
key = keyEntry.get()
decrypted = decrypt(key, cyphertext)
output.set(decrypted)
top = Tkinter.Tk()
frame1 = Frame(top)
frame1.pack()
frame2 = Frame(top)
frame2.pack()
frame3 = Frame(top)
frame3.pack()
frame4 = Frame(top)
frame4.pack()
L1 = Label(frame1, text="Cypher")
L1.pack(side=LEFT)
E1 = Entry(frame1, bd=5)
E1.pack(side=LEFT)
L2 = Label(frame2, text="Key")
L2.pack(side=LEFT)
E2 = Entry(frame2, bd=5)
E2.pack(side=LEFT)
B1 = Tkinter.Button(frame3, text="Decrypt", command=lambda: callback(E1, E2, v))
B1.pack()
L2 = Label(frame4, text="Output")
L2.pack()
v = StringVar()
L3 = Label(frame4, textvariable=v)
L3.pack(side=LEFT)
top.mainloop()
我已经编写了这段 python 代码,并且正在尝试添加一个简单的 GUI。我想使用 GUI 从用户那里获取输入,而不是对输入进行硬编码。
import math
def main():
ciphertext = 'litrutisfgsofnaeeieoitdt'
myKey = 4
plaintext = decryption(myKey, ciphertext)
print(plaintext)
def decryption(key, message):
colNum = math.ceil(len(message) / key)
rowNum = key
shadeNum = (colNum * rowNum) - len(message)
plaintext = [''] * colNum
col = 0
row = 0
for symbol in message:
plaintext[col] += symbol
col += 1
if (col == colNum) or (col == colNum - 1 and row >= rowNum - shadeNum):
col = 0
row += 1
return ''.join(plaintext)
if __name__ == '__main__':
main()
我想从用户输入中获取密文和密钥,并添加一个按钮来完成解密部分并在标签中显示结果。我正在尝试使用 Tkinter 添加 GUI,但老实说,我不知道如何 link 它。我应该怎么做?
如果您只需要动态输入,请使用 raw_input() 函数(只需 input() for python 3)。如果您真的需要 GUI,我只能向您指出内置的 Tkinter 模块,它可能是 python 的(众多)GUI 框架中最简单的。它的文档可以在这里找到:https://docs.python.org/2/library/tkinter.html。我没有必要为您编写完整的代码。它易于学习,如果您遇到困难,请提出更精确的问题,肯定会有人乐于回答。
您可以从 link 使用 UI 中的解密按钮的解密函数的示例代码开始。 逻辑就是给按钮附加一个回调函数。
import Tkinter
from Tkinter import *
def decrypt(key, cyphertext):
# do decryption
return "Decrypted "+key+cyphertext
def callback(cyphertextEntry, keyEntry, output):
cyphertext = cyphertextEntry.get()
key = keyEntry.get()
decrypted = decrypt(key, cyphertext)
output.set(decrypted)
top = Tkinter.Tk()
frame1 = Frame(top)
frame1.pack()
frame2 = Frame(top)
frame2.pack()
frame3 = Frame(top)
frame3.pack()
frame4 = Frame(top)
frame4.pack()
L1 = Label(frame1, text="Cypher")
L1.pack(side=LEFT)
E1 = Entry(frame1, bd=5)
E1.pack(side=LEFT)
L2 = Label(frame2, text="Key")
L2.pack(side=LEFT)
E2 = Entry(frame2, bd=5)
E2.pack(side=LEFT)
B1 = Tkinter.Button(frame3, text="Decrypt", command=lambda: callback(E1, E2, v))
B1.pack()
L2 = Label(frame4, text="Output")
L2.pack()
v = StringVar()
L3 = Label(frame4, textvariable=v)
L3.pack(side=LEFT)
top.mainloop()