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 19 Python
分享给Python新手们的几道简单练习题
Sep 21 Python
Python机器学习之K-Means聚类实现详解
Feb 22 Python
python实现Windows电脑定时关机
Jun 20 Python
Django框架登录加上验证码校验实现验证功能示例
May 23 Python
Python3远程监控程序的实现方法
Jul 15 Python
Python generator生成器和yield表达式详解
Aug 08 Python
Python获取、格式化当前时间日期的方法
Feb 10 Python
python读取hdfs并返回dataframe教程
Jun 05 Python
Python devel安装失败问题解决方案
Jun 09 Python
python3.4中清屏的处理方法
Jul 06 Python
pycharm debug 断点调试心得分享
Apr 16 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
PHP统计目录下的文件总数及代码行数(去除注释及空行)
2011/01/17 PHP
php版微信开发之接收消息,自动判断及回复相应消息的方法
2016/09/23 PHP
PHP输出Excel PHPExcel的方法
2018/07/26 PHP
Laravel创建数据库表结构的例子
2019/10/09 PHP
Use Word to Search for Files
2007/06/15 Javascript
jQuery toggleClass应用实例(附效果图)
2014/04/06 Javascript
jQuery控制网页打印指定区域的方法
2015/04/07 Javascript
JS脚本根据手机浏览器类型跳转WAP手机网站(两种方式)
2015/08/04 Javascript
AngularJS HTML DOM详解及示例代码
2016/08/17 Javascript
Jquery表单验证失败后不提交的解决方法
2016/10/18 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
2016/10/24 Javascript
解决vue 更改计算属性后select选中值不更改的问题
2018/03/02 Javascript
Angular路由ui-router配置详解
2018/08/01 Javascript
AngularJs1.x自定义指令独立作用域的函数传入参数方法
2018/10/09 Javascript
JavaScript实现动态添加、移除元素或属性的方法分析
2019/01/03 Javascript
vue+php实现的微博留言功能示例
2019/03/16 Javascript
bootstrap table列和表头对不齐的解决方法
2019/07/19 Javascript
Vue封装全局过滤器Filters的步骤
2020/09/16 Javascript
python通过socket实现多个连接并实现ssh功能详解
2017/11/08 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
python无限生成不重复(字母,数字,字符)组合的方法
2018/12/04 Python
HTML5 和小程序实现拍照图片旋转、压缩和上传功能
2018/10/08 HTML / CSS
adidas马来西亚官网:adidas MY
2020/09/12 全球购物
地球鞋加拿大官网:Earth Shoes Canada
2020/11/17 全球购物
英国Iceland杂货店:网上食品购物
2020/12/16 全球购物
2013年军训通讯稿
2014/02/05 职场文书
交警个人先进事迹材料
2014/05/11 职场文书
相亲大会策划方案
2014/06/05 职场文书
2014旅游局领导班子四风问题对照检查材料思想汇报
2014/09/19 职场文书
党的群众路线批评与自我批评发言稿
2014/10/16 职场文书
群众路线表态发言材料
2014/10/17 职场文书
党员带头倡议书
2015/04/29 职场文书
mysql 8.0.24 安装配置方法图文教程
2021/05/12 MySQL
教你用Python+selenium搭建自动化测试环境
2021/06/18 Python
MySQL系列之九 mysql查询缓存及索引
2021/07/02 MySQL
MySQL之select、distinct、limit的使用
2021/11/11 MySQL