python - 你如何“连接”这个源代码和我的 tkinter python
问题描述
嗨,我是 python 新手,我用 tkinter 创建了一个非常简单的加密代码和一个简单的 gui,但我似乎无法将它们“连接”在一起我非常努力,但我现在需要帮助
def machine():
global newMessage
keys = "abcdefghijklmnopqrstuvwxyz !"
values = keys[-1] + keys[0:-1]
encryptDict = dict(zip(keys, values))
decryptdict = dict(zip(values, keys))
message = input("Enter your message so i can encrypt or decrypt it :) ")
mode = input("encrypt(E) OR decrypt(D) ")
if mode.upper() == "E":
newMessage = ''.join([encryptDict[letter] for letter in message.lower()])
elif mode.upper() == "D":
newMessage = ''.join([decryptdict[letter] for letter in message.lower()])
else:
print("use either E or D ")
return newMessage
print(machine())
那是加密方法
import tkinter as tk
HIGHT = 240
WIDTH = 720
root = tk.Tk()
canvas = tk.Canvas(root, height=HIGHT, width=WIDTH)
canvas.pack()
label = tk.Label(root, text="Enter your message so i can encrypt or decrypt it :)")
label.place(relx=0.25, rely=0.1, relwidth=0.5, relheight=0.125)
entry = tk.Entry(root)
entry.place(relx=0.1, rely=0.3, relwidth=0.8, relheight=0.125)
entry = tk.Entry(root)
entry.place(relx=0.1, rely=0.7, relwidth=0.8, relheight=0.125)
button = tk.Button(root, text="Incrypt")
button.place(relx=0.68, rely=0.5, relwidth=0.125, relheight=0.125)
button = tk.Button(root, text="Decrypt")
button.place(relx=0.18, rely=0.5, relwidth=0.125, relheight=0.125)
root.mainloop()
那就是gui
解决方案
使用小部件中的“命令”参数将Button
其设置为事件处理程序,在您的情况下为machine
. 由于您在同一函数下进行加密和解密,因此在调用此函数时会发送一个信号,如下所示使用lambda
函数。另外,替换 message = input("Enter your message so i can encrypt or decrypt it :) ")
为message=entry.get()
. 你已经分配entry=Entry()
了两次,我认为这是一个错误,所以删除它。最后,不要return
使用现有的标签小部件来显示输出,config
或者您也可以创建一个新标签并使用它来显示输出。
这是完整的代码,您可以进一步即兴创作:
import tkinter as tk
HIGHT = 240
WIDTH = 720
def machine(mode):
global newMessage
keys = "abcdefghijklmnopqrstuvwxyz !"
values = keys[-1] + keys[0:-1]
encryptDict = dict(zip(keys, values))
decryptdict = dict(zip(values, keys))
message = entry.get()
if mode == 0:
newMessage = ''.join([encryptDict[letter] for letter in message.lower()])
elif mode == 1:
newMessage = ''.join([decryptdict[letter] for letter in message.lower()])
label.config(text='Message: '+ newMessage)
root = tk.Tk()
canvas = tk.Canvas(root, height=HIGHT, width=WIDTH)
canvas.pack()
label = tk.Label(root, text="Enter your message so i can encrypt or decrypt it :)")
label.place(relx=0.25, rely=0.1, relwidth=0.5, relheight=0.125)
entry = tk.Entry(root)
entry.place(relx=0.1, rely=0.3, relwidth=0.8, relheight=0.125)
button = tk.Button(root, text="Encrypt", command=lambda :machine(0))
button.place(relx=0.68, rely=0.5, relwidth=0.125, relheight=0.125)
button2 = tk.Button(root, text="Decrypt", command=lambda :machine(1))
button2.place(relx=0.18, rely=0.5, relwidth=0.125, relheight=0.125)
root.mainloop()
更新:
要将文本插入Entry
小部件,请使用Entry.insert(index, string)
. 另外,不要忘记使用 清除现有文本Entry
,Entry.delete(0, END)
'END' 说明符将确保它删除从第 0 个索引开始的所有文本。
import tkinter as tk
HIGHT = 240
WIDTH = 720
def machine(mode):
global newMessage
keys = "abcdefghijklmnopqrstuvwxyz !"
values = keys[-1] + keys[0:-1]
encryptDict = dict(zip(keys, values))
decryptdict = dict(zip(values, keys))
message = entry.get()
if mode == 0:
newMessage = ''.join([encryptDict[letter] for letter in message.lower()])
elif mode == 1:
newMessage = ''.join([decryptdict[letter] for letter in message.lower()])
entry2.delete(0, tk.END)
entry2.insert(0,'Message: '+ newMessage)
root = tk.Tk()
canvas = tk.Canvas(root, height=HIGHT, width=WIDTH)
canvas.pack()
label = tk.Label(root, text="Enter your message so i can encrypt or decrypt it :)")
label.place(relx=0.25, rely=0.1, relwidth=0.5, relheight=0.125)
entry = tk.Entry(root)
entry.place(relx=0.1, rely=0.3, relwidth=0.8, relheight=0.125)
entry2 = tk.Entry(root)
entry2.place(relx=0.1, rely=0.7, relwidth=0.8, relheight=0.125)
button = tk.Button(root, text="Encrypt", command=lambda :machine(0))
button.place(relx=0.68, rely=0.5, relwidth=0.125, relheight=0.125)
button2 = tk.Button(root, text="Decrypt", command=lambda :machine(1))
button2.place(relx=0.18, rely=0.5, relwidth=0.125, relheight=0.125)
root.mainloop()
推荐阅读
- sql - 如何从 N1QL 查询中的嵌套数组中提取最大值和最小值?
- java - Java 微流列表对象未正确存储
- laravel - 如何在表单请求验证中使用忽略规则
- redis - 如何使用 Kafka Streams 将数据写入 Redis 自定义状态存储
- python - 面板数据拆分
- android - React Native Share 间歇性地无法在 android 上运行
- c# - C# 无法转换对象
- here-api - Here Fleet Telematics 管理区域
- python - 我怎样才能使这部分成为我的新代码循环?
- javascript - 异步等待仅在 catch 中输出错误消息