unknown886 2021-12-29 16:52 采纳率: 53.3%
浏览 34
已结题

需要用python中的tkinter修改一下界面!


from tkinter import *   #引入tkinter库
from PIL import Image    #引入PIL库的Imgae子模块
from PIL import ImageTk    #引入PIL库的ImageTk子模块
import qrcode   #引入qrcode库
root = Tk() #新建窗口
root.title('二维码生成器')  #窗口标题
img = qrcode.make('https://www.codemao.cn')  #将这个网站转换为二维码图片
img.save('d:\\hello.png') #保存二维码图片到本地  【这句话运行不了】
img = Image.open('d:\\hello.png') #打开本地二维码图片
img = ImageTk.PhotoImage(img)  #根据本地图片生成窗体图片
t = Text(root, height=10, font=("黑体", 15)) #在窗体嵌入输入框
t.grid(row=0, column=0, padx=10, pady=5) #输入框的位置
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((500, 500))
    #重新在窗体中显示新生成的二维码图片,覆盖刚才的图片
    img = ImageTk.PhotoImage(img)
    label.configure(image=img)
    label.image = img
btn = Button(root, text='点我生成二维码', width=20, font=("黑体", 30), command=callback)  #按钮,按钮相应函数 callback
btn.grid(row=1, column=0, pady=20)  #按钮位置
label = Label(root, image=img, width=500, height=500) #嵌入二维码图片
label.grid(row=2, column=0)  #二维码图片位置
root.mainloop()
 

img


如图所示,需要修改一下界面!

  • 写回答

1条回答 默认 最新

  • Hann Yang 全栈领域优质创作者 2021-12-30 19:55
    关注

    控件设置到任意位置,使用.place()比较容易设置:

    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相应函数command=yourfunc请自己编制
         btn2.place(x=480, y=480)  #按钮位置
         
         label = Label(root, image=img, width=400, height=400) #嵌入二维码图片
         label.place(x=400,y=0)  #二维码图片位置
    
         root.mainloop()
     
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月9日
  • 已采纳回答 1月1日
  • 创建了问题 12月29日

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看