关于#UI#的问题,如何解决?

加密和解密
创建一个GUI应用程序,使用Python进行加密和解密
提示:需要调用tkinter库来生成图形界面,然后需要编写使用无限循环的代码,代码将不断询问用户是否要加密或解密消息。加密和解密在规则可以自己简单设定。

有帮助的话 采纳一下 谢谢呦

import tkinter as tk

window = tk.Tk()  
window.title('加密解密')  

def encrypt():
    message = entry.get() 
    key = key_entry.get()
    result = ''
    for c in message:
        if c.isupper():
            result += chr((ord(c) + int(key) - 65) % 26 + 65) 
        else:
            result += chr((ord(c) + int(key) - 97) % 26 + 97) 
    output.delete(0.0, tk.END) 
    output.insert(tk.END, result)   

def decrypt():  
    message = entry.get()
    key = key_entry.get()
    result = ''
    for c in message:
        if c.isupper():
            result += chr((ord(c) - int(key) - 65) % 26 + 65)
        else:
            result += chr((ord(c) - int(key) - 97) % 26 + 97) 
    output.delete(0.0, tk.END) 
    output.insert(tk.END, result)   

frame = tk.Frame(window)  
frame.pack()   

tk.Label(frame, text='请输入消息:').pack(side=tk.LEFT)
entry = tk.Entry(frame, width=50) 
entry.pack(side=tk.LEFT)

tk.Label(frame, text='请输入密钥:').pack(side=tk.LEFT)  
key_entry = tk.Entry(frame, width=10) 
key_entry.pack(side=tk.LEFT)

encrypt_button = tk.Button(frame, text='加密', command=encrypt) 
encrypt_button.pack(side=tk.LEFT)  

decrypt_button = tk.Button(frame, text='解密', command=decrypt)
decrypt_button.pack(side=tk.LEFT)    

output = tk.Text(window, height=10, width=70)  
output.pack()  

window.mainloop()

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7418023
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:python的tkinter编程(四)GUI界面里面使用类进行开发,也就是自定义组件
  • 除此之外, 这篇博客: python-使用Tkinter进行GUI程序设计(参考课本实现的案例中介绍用处)中的 6.2 自己实现的图片显示和关闭+网上看到的压缩图片算法 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    from tkinter import *
    from PIL import Image, ImageTk
    from IPython.terminal.pt_inputhooks import tk
    
    
    class ImageDemo:
        #对一个pil_image对象进行缩放,让它在一个矩形框内,还能保持比例
        def resize( self,w_box, h_box, pil_image): #参数是:要适应的窗口宽、高、Image.open后的图片
            w, h = pil_image.size #获取图像的原始大小
            f1 = 1.0*w_box/w
            f2 = 1.0*h_box/h
            factor = min([f1, f2])#选择最小的缩小比例,使得图形成比例变小
            width = int(w*factor)
            height = int(h*factor)
            return pil_image.resize((width, height), Image.ANTIALIAS)
    
        def displayImage(self):
    
            self.filePath=self.filePathVar.get()
            w_box = 110    # 期望图像显示的大小(窗口大小)
            h_box = 250
            # pil_image =  Image.open(r'C:/Users/Lenovo/Desktop/1.jpg')    #以一个PIL图像对象打开  【调整待转图片格式】
            pil_image = Image.open( self.filePath)    #以一个PIL图像对象打开  【调整待转图片格式】
            pil_image_resized = self.resize( w_box, h_box, pil_image)    #缩放图像让它保持比例,同时限制在一个矩形框范围内  【调用函数,返回整改后的图片】
    
            self.imageItem = ImageTk.PhotoImage(pil_image_resized)    # 把PIL图像对象转变为Tkinter的PhotoImage对象  【转换格式,方便在窗口展示】
    
            self.canvas.create_image(w_box,h_box,image=self.imageItem, tags="Image")
    
        def __init__(self):
            window = Tk()
            window.title("ImageDemo")
            self.canvas = Canvas(window,width=180,height=400)
            self.canvas.pack()
            frame = Frame(window)
            frame.pack()
            self.filePathVar=StringVar()
    
            Entry(frame,textvariable=self.filePathVar,justify=LEFT,width=40).grid(row=1,column=1)
            btOn = Button(frame, text="显示图片", command=self.displayImage,).grid(row=2, column=1,sticky=W)
            # Python3 tkinter基础 Canvas delete 删除画布中的所有图形
            btDelete = Button(frame, text="关闭图片", command=(lambda x=ALL: self.canvas.delete(x))).grid(row=2, column=2,sticky=E)
            window.mainloop() #创建事件循环直到关闭主窗口
    
    ImageDemo()
    
    # 测试案例:C:/Users/Lenovo/Desktop/1.jpg
    

    在这里插入图片描述

  • 您还可以看一下 尹成老师的python GUI教程课程中的 简介python3的tkinter代码小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    我可以为您提供基本的思路和代码示例,但由于加密算法需要根据具体的需求和安全要求进行选择和实现,而本题并未指定具体的加密算法,因此无法提供完整的代码实现。

    首先,使用tkinter库创建一个图形用户界面,可以参考段落2和段落3的示例代码,创建按钮、标签、输入框等必要组件,并进行布局。

    其次,根据具体需求选择合适的加密算法,并使用Python实现加密和解密功能。可以参考Python cryptography模块中的加密算法,或是实现自己的加密算法。

    最后,在GUI应用程序中添加一定的规则来进行加密和解密操作,可以使用无限循环来不断提示用户是否需要加密或解密消息,然后根据用户的选择调用相应的加密或解密函数。可以参考以下示例代码:

    import tkinter as tk
    from cryptography.fernet import Fernet # 选择加密算法
    
    class App(tk.Frame):
        def __init__(self, master=None):
            super().__init__(master)
            self.master = master
            self.pack()
            self.create_widgets()
    
        def create_widgets(self):
            self.title_label = tk.Label(self, text="加密解密工具")
            self.title_label.pack()
    
            self.input_label = tk.Label(self, text="输入消息:")
            self.input_label.pack()
    
            self.input_entry = tk.Entry(self)
            self.input_entry.pack()
    
            self.encrypt_button = tk.Button(self, text="加密", command=self.encrypt)
            self.encrypt_button.pack()
    
            self.decrypt_button = tk.Button(self, text="解密", command=self.decrypt)
            self.decrypt_button.pack()
    
        def encrypt(self):
            input_text = self.input_entry.get()
            key = Fernet.generate_key()
            f = Fernet(key)
            encrypted = f.encrypt(bytes(input_text, encoding='utf8'))
            print("加密后的消息:", encrypted)
    
        def decrypt(self):
            input_text = self.input_entry.get()
            # 使用与加密时相同的key进行解密
            f = Fernet(key)
            decrypted = f.decrypt(input_text)
            print("解密后的消息:", decrypted)
    
    root = tk.Tk()
    root.geometry("400x200")
    app = App(master=root)
    app.mainloop()
    

    在以上代码中,我们选择了cryptography库中的Fernet算法作为加密算法,使用按钮和输入框等组件构建了一个GUI应用程序,并在加密和解密函数中调用了Fernet的加密和解密函数实现了消息的加密和解密,最终在控制台输出了加密和解密后的消息。

    希望以上示例代码可以为您提供一些帮助。如有不清楚的地方或有其他问题,欢迎随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^