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中操作文件之write()方法的使用教程
May 25 Python
Python实现数据库并行读取和写入实例
Jun 09 Python
Python实现的微信好友数据分析功能示例
Jun 21 Python
Python列表解析配合if else的方法
Jun 23 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
Jul 16 Python
使用python脚本实现查询火车票工具
Jul 19 Python
使用python实现快速搭建简易的FTP服务器
Sep 12 Python
python字典改变value值方法总结
Jun 21 Python
python3连接MySQL8.0的两种方式
Feb 17 Python
python如何导入依赖包
Jul 13 Python
Python Merge函数原理及用法解析
Sep 16 Python
python制作图形界面的2048游戏, 基于tkinter
Apr 06 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 base64+gzinflate压缩编码和解码代码
2008/10/03 PHP
PHP多线程批量采集下载美女图片的实现代码(续)
2013/06/03 PHP
PHP的Yii框架使用中的一些错误解决方法与建议
2015/08/21 PHP
phpmailer绑定邮箱的实现方法
2016/12/01 PHP
Yii2选项卡的简单使用
2017/05/26 PHP
PHP ob缓存以及ob函数原理实例解析
2020/11/13 PHP
优秀js开源框架-jQuery使用手册(1)
2007/03/10 Javascript
Highslide.js是一款基于js实现的网页中图片展示插件
2020/03/30 Javascript
js获取图片长和宽度的代码
2009/11/24 Javascript
ExtJS 工具栏 分页事件参数
2010/03/05 Javascript
jQuery实现切换页面布局使用介绍
2011/10/09 Javascript
suggestion开发小结以及对键盘事件的总结(针对中文输入法状态)
2011/12/20 Javascript
JavaScript中的函数嵌套使用
2015/06/04 Javascript
原生js实现autocomplete插件
2016/04/14 Javascript
纯JS前端实现分页代码
2016/06/21 Javascript
详解微信小程序 template添加绑定事件
2017/06/23 Javascript
详解用webpack的CommonsChunkPlugin提取公共代码的3种方式
2017/11/09 Javascript
vue input 输入校验字母数字组合且长度小于30的实现代码
2018/05/16 Javascript
vue2.0 可折叠列表 v-for循环展示的实例
2018/09/07 Javascript
npm qs模块使用详解
2020/02/07 Javascript
简单了解前端渐进式框架VUE
2020/07/20 Javascript
解决vue组件销毁之后计时器继续执行的问题
2020/07/21 Javascript
解决vue net :ERR_CONNECTION_REFUSED报错问题
2020/08/13 Javascript
微信小程序实现左滑删除效果
2020/11/18 Javascript
[02:05]2014DOTA2西雅图国际邀请赛 BBC第二天小组赛总结
2014/07/11 DOTA
[02:52]2017DOTA2国际邀请赛中国区预选赛晋级之路
2017/07/03 DOTA
Python中的数学运算操作符使用进阶
2016/06/20 Python
Python多线程处理实例详解【单进程/多进程】
2019/01/30 Python
pycharm实现在子类中添加一个父类没有的属性
2020/03/12 Python
今天学到的CSS最新技术(与图片背景相关)
2012/12/24 HTML / CSS
汽车专业学生自我评价
2014/01/19 职场文书
社区党总支书记先进事迹材料
2014/01/24 职场文书
初中生旷课检讨书范文
2014/10/06 职场文书
钳工实训报告总结
2014/11/04 职场文书
React实现动效弹窗组件
2021/06/21 Javascript
德生2P3收音机开箱评测
2022/04/30 无线电