python 使用三引号时容易犯的小错误


Posted in Python onOctober 21, 2020

请看如下代码,执行后,思考生成的两个二维码为什么不一样?

# -*- coding:utf-8 -*-
from tkinter import *
from tkinter import ttk
from PIL import ImageTk
import qrcode
class QRcodeImage(object):
  '''生成二维码图片类'''

  def __init__(self, content, fcolor=None, bcolor=None, size=None):
    '''
    参数说明:
    content:二维码图片的文本内容
    fcolor:二维码图片的前景色
    bcolor:二维码图片的背景色
    size:二维码大小
    '''
    qr = qrcode.QRCode(version=2,
              error_correction=qrcode.constants.ERROR_CORRECT_L, #容错率
              box_size=8,
              border=2) # 实例化QRCode类,得到qr对象
    qr.add_data(content) # 二维码内容添加到图片中
    qr.make(fit=True) # 图片中的二维码大小自适应,以保证二维码内容能完整绘制
    if fcolor == None: fcolor = 'black' #默认前景色为黑色
    if bcolor == None:bcolor = 'white' #默认背景色为白色
    img = qr.make_image(fill_color=fcolor,
              back_color=bcolor) #生成彩色二维码图片
    img = img.convert(mode="RGBA") # 将图片的模式转换为彩色透明模式
    if size == None: size = 150 #默认图片大小
    self.img = img.resize((size, size))

  def getPhotoImage(self):
    '''转换为PhotoImage'''
    tkimg = ImageTk.PhotoImage(self.img)
    return tkimg
def cvfill():
  cv.create_window(200, 50, window=lbimg1, width=155, height=155,
           anchor=NW,
           )
  cv.create_window(50, 50, window=lbimg2, width=155, height=155,
         anchor=NW,
         )
  global img1
  img1 = QRcodeImage(content).getPhotoImage()
  lbimg1.config(image=img1)
  content1='''BEGIN:VCARD
  FN:steven
  TITLE:Drector
  TEL;TYPE=CELL:15201011234
  NOTE:
  END:VCARD '''
  global img2
  img2=QRcodeImage(content1).getPhotoImage()
  lbimg2.config(image=img2)
root = Tk()


cv = Canvas(root, width='94m', height='54m', bg='#F0F8FF',
    highlightbackground='gold',
    highlightthickness=2,
    )
cv.pack(pady=10)

lbimg1 = Label()
lbimg2 = Label()
content='''BEGIN:VCARD
FN:steven
TITLE:Drector
TEL;TYPE=CELL:15201011234
NOTE:
END:VCARD '''
cvfill()
mainloop()

执行上述代码,结果如下图所示:

python 使用三引号时容易犯的小错误

明显两个二维码图片不同,而出现这样的差异的原因就出现在全局变量content和局部变量content1的赋值上。

content的赋值后的结果为:

content = BEGIN:VCARD\nFN:steven\nTITLE:Drector\nTEL;TYPE=CELL:15201011234\nNOTE:\nEND:VCARD

而content1的赋值后的结果为:

content1 = BEGIN:VCARD\n  FN:steven\n  TITLE:Drector\n  TEL;TYPE=CELL:15201011234\n  NOTE:\n  END:VCARD

明显content和content1的值的内容不一样,content1多了很多空格字符。造成这样结果的原因就是因为在函数cvfill()中,三引号'''中的内容从第二行开始进行了缩进,导致增加了很多缩进的空格,这是很容易犯的一个小错误,并且不易被注意到。

以上就是python 使用三引号时容易犯的小错误的详细内容,更多关于python 三引号的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python中实现结构相似的函数调用方法
Mar 10 Python
python基础入门学习笔记(Python环境搭建)
Jan 13 Python
老生常谈Python基础之字符编码
Jun 14 Python
win10下Python3.6安装、配置以及pip安装包教程
Oct 01 Python
Python实现的计数排序算法示例
Nov 29 Python
Python读写及备份oracle数据库操作示例
May 17 Python
python3实现高效的端口扫描
Aug 31 Python
在python中做正态性检验示例
Dec 09 Python
Python requests获取网页常用方法解析
Feb 20 Python
python框架flask入门之路由及简单实现方法
Jun 07 Python
python引入其他文件夹下的py文件具体方法
May 23 Python
Python OpenCV实现传统图片格式与base64转换
Jun 13 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
Oct 21 #Python
基于python爬取链家二手房信息代码示例
Oct 21 #Python
如何让PyQt5中QWebEngineView与JavaScript交互
Oct 21 #Python
Python为何不支持switch语句原理详解
Oct 21 #Python
基于Python爬取素材网站音频文件
Oct 21 #Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
Oct 21 #Python
运行Python编写的程序方法实例
Oct 21 #Python
You might like
DOTA2 无惧惊涛骇浪 昆卡大型水友攻略
2020/04/20 DOTA
手冲咖啡应该是现代精品咖啡店的必备选项吗?
2021/03/03 冲泡冲煮
自动生成文章摘要的代码[PHP 版本]
2007/03/20 PHP
php下实现一个阿拉伯数字转中文数字的函数
2008/07/10 PHP
php魔术变量用法实例详解
2014/11/13 PHP
PHP数组游标实现对数组的各种操作详解
2016/01/26 PHP
PHP递归实现层级树状展开
2016/04/01 PHP
PHP使用DOM和simplexml读取xml文档的方法示例
2017/02/08 PHP
PHP基于简单递归函数求一个数阶乘的方法示例
2017/04/26 PHP
php 中phar包的使用教程详解
2018/10/26 PHP
js弹出框轻量级插件jquery.boxy使用介绍
2013/01/15 Javascript
jQuery事件用法实例汇总
2014/08/29 Javascript
JavaScript常用判断写法大全(推荐)
2016/05/30 Javascript
通过正则表达式获取url中参数的简单实现
2016/06/07 Javascript
jQuery滚动插件scrollable.js用法分析
2017/05/25 jQuery
详解Javascript获取缓存和清除缓存API
2017/05/25 Javascript
详解vue中点击空白处隐藏div的实现(用指令实现)
2018/04/19 Javascript
Vue中使用vue-i18插件实现多语言切换功能
2018/04/25 Javascript
JS查找孩子节点简单示例
2019/07/25 Javascript
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
2019/09/24 Javascript
使用Layer组件弹出多个对话框(非嵌套)与关闭及刷新的例子
2019/09/25 Javascript
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
2019/10/16 jQuery
JS函数进阶之prototy用法实例分析
2020/01/15 Javascript
基于Vue sessionStorage实现保留搜索框搜索内容
2020/06/01 Javascript
微信小程序实现点击生成随机验证码
2020/09/09 Javascript
python 添加用户设置密码并发邮件给root用户
2016/07/25 Python
python安装模块如何通过setup.py安装(超简单)
2018/05/05 Python
python3读取csv和xlsx文件的实例
2018/06/22 Python
浅谈python3.6的tkinter运行问题
2019/02/22 Python
Python基于staticmethod装饰器标示静态方法
2020/10/17 Python
python爬虫scrapy图书分类实例讲解
2020/11/23 Python
html5服务器推送_动力节点Java学院整理
2017/07/12 HTML / CSS
校运会通讯稿
2015/07/18 职场文书
导游词之徐州-云龙山
2019/09/29 职场文书
Python-OpenCV教程之图像的位运算详解
2021/06/21 Python
Go Plugins插件的实现方式
2021/08/07 Golang