unknown886 2022-01-16 19:41 采纳率: 53.3%
浏览 21
已结题

按钮功能如何显示保存

我需要实现 保存 这个按钮的功能
 
 
from tkinter import *   #引入tkinter库
from PIL import Image    #引入PIL库的Imgae子模块
from PIL import ImageTk    #引入PIL库的ImageTk子模块
import qrcode   #引入qrcode库
def create_qrcode(text, filename):
    """
    生成二维码图片
    """
    qr = qrcode.QRCode(
        version=None,
        error_correction=qrcode.ERROR_CORRECT_H,
        box_size=5,
        border=1
    )
    qr.make(fit=True)
    qr.add_data(text)
    # fill_color和back_color参数改变生成图片的格子颜色和背景颜色
    img = qr.make_image(fill_color="Tan", back_color="white")
    img.save(filename + '.png')
def callback():
    # 获取文本框内的内容
    text_input = t.get(0.0, "end")
    if text_input=='\n':
        text_input = 'http://www.baidu.com'
    # 定义图片的名字为输入内容的第一个字符
    img_name = text_input[0:1]
    #生成二维码图片
    create_qrcode(text_input, img_name)
    #保存二维码图片至本地
    img = Image.open(img_name + '.png')
    #设定图片大小
    img = img.resize((320, 320))
    #重新在窗体中显示新生成的二维码图片,覆盖刚才的图片
    img = ImageTk.PhotoImage(img)
    label.configure(image=img)
    label.image = img
if __name__ == "__main__":
     root = Tk() #新建窗口
     root.geometry("800x600") #窗口大小
     root.resizable(False,False) #禁止改变窗口大小
     root.title('二维码生成器')  #窗口标题
     img = qrcode.make('https://www.baidu.com')  #将这个网站转换为二维码图片
     img.save('d:\\hello.png') #保存二维码图片到本地   
     img = Image.open('d:\\hello.png') #打开本地二维码图片
     img = ImageTk.PhotoImage(img)  #根据本地图片生成窗体图片
     lbl = Label(root, text = '名称:', font=("黑体", 14), width=5, height=1,foreground='red')  #名称标签,前景色设红色
     lbl.place(x=15,y=10)  #二维码图片位置
     t = Text(root,width=36, height=15, font=("黑体", 16)) #在窗体嵌入输入框
     t.place(x=15, y=45) #输入框的位置
     btn1 = Button(root, text='点我生成二维码', width=20, font=("黑体", 14), command=callback)  #按钮,按钮相应函数 callback
     btn1.place(x=120, y=480)  #按钮位置

     btn2 = Button(root, text='保存', width=20, font=("黑体", 14))  #按钮2
     btn2.place(x=480, y=480)  #按钮位置

     label = Label(root, image=img, width=400, height=400) #嵌入二维码图片
     label.place(x=400,y=0)  #二维码图片位置
     root.mainloop()
 

目前保存保存按钮是空按的,无法实现按钮保存!

  • 写回答

2条回答 默认 最新

  • 陈年椰子 2022-01-16 20:08
    关注

    提问题要描述下需求。
    这样就可以打开一个文件窗口

    from tkinter import *  # 引入tkinter库
    from tkinter import filedialog
    from PIL import Image  # 引入PIL库的Imgae子模块
    from PIL import ImageTk  # 引入PIL库的ImageTk子模块
    import qrcode  # 引入qrcode库
    
    
    def create_qrcode(text, filename):
        """
        生成二维码图片
        """
        qr = qrcode.QRCode(
            version=None,
            error_correction=qrcode.ERROR_CORRECT_H,
            box_size=5,
            border=1
        )
        qr.make(fit=True)
        qr.add_data(text)
        # fill_color和back_color参数改变生成图片的格子颜色和背景颜色
        img = qr.make_image(fill_color="Tan", back_color="white")
        img.save(filename + '.png')
    
    def save_qr():
        # 获取文本框内的内容
        text_input = t.get(0.0, "end")
        # print(text_input)
        if text_input == '\n':
            text_input = 'http://www.baidu.com'
        # 定义图片的名字为输入内容的第一个字符
        img_name = filedialog.asksaveasfilename()
        # print(img_name)
        # 生成二维码图片
        create_qrcode(text_input, img_name)
    
    def callback():
        # 获取文本框内的内容
        text_input = t.get(0.0, "end")
        if text_input == '\n':
            text_input = 'http://www.baidu.com'
        # 定义图片的名字为输入内容的第一个字符
        img_name = text_input[0:1]
        # 生成二维码图片
        create_qrcode(text_input, img_name)
        # 保存二维码图片至本地
        img = Image.open(img_name + '.png')
        # 设定图片大小
        img = img.resize((320, 320))
        # 重新在窗体中显示新生成的二维码图片,覆盖刚才的图片
        img = ImageTk.PhotoImage(img)
        label.configure(image=img)
        label.image = img
    
    
    if __name__ == "__main__":
        root = Tk()  # 新建窗口
        root.geometry("800x600")  # 窗口大小
        root.resizable(False, False)  # 禁止改变窗口大小
        root.title('二维码生成器')  # 窗口标题
        img = qrcode.make('https://www.baidu.com')  # 将这个网站转换为二维码图片
        img.save('d:\\hello.png')  # 保存二维码图片到本地
        img = Image.open('d:\\hello.png')  # 打开本地二维码图片
        img = ImageTk.PhotoImage(img)  # 根据本地图片生成窗体图片
        lbl = Label(root, text='名称:', font=("黑体", 14), width=5, height=1, foreground='red')  # 名称标签,前景色设红色
        lbl.place(x=15, y=10)  # 二维码图片位置
        t = Text(root, width=36, height=15, font=("黑体", 16))  # 在窗体嵌入输入框
        t.place(x=15, y=45)  # 输入框的位置
        btn1 = Button(root, text='点我生成二维码', width=20, font=("黑体", 14), command=callback)  # 按钮,按钮相应函数 callback
        btn1.place(x=120, y=480)  # 按钮位置
    
        btn2 = Button(root, text='保存', width=20, font=("黑体", 14), command=save_qr)  # 按钮2
        btn2.place(x=480, y=480)  # 按钮位置
    
        label = Label(root, image=img, width=400, height=400)  # 嵌入二维码图片
        label.place(x=400, y=0)  # 二维码图片位置
        root.mainloop()
    
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月24日
  • 已采纳回答 1月16日
  • 创建了问题 1月16日

悬赏问题

  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来