python 自学笔记之 签名设计

     对于我而言,python只是一种兴趣,并非软件专业,学习它真的需要动力坚持,以及闲暇时间的牺牲。作为一个初学者,曾经尝试过一点一点从语法基础来学,坚持一段时间后,因为实在是乏味,放弃了。当然只是比原来花费精力要少一些。

    跟着视频,自己随便弄了个小项目,即时学习python也是为了让自己有兴趣学下去。下面是效果。最喜欢的周董 哈哈!


这个签名设计,我们是通过模拟签名网站,向其服务器发送请求然后将其内容显示在我们的窗口上。

换句话来说就是把浏览器的部分内容呈现在窗口上。

from tkinter import * 
from tkinter import messagebox 
from PIL import  Image,ImageTk #显示窗口用的
import requests  #获取网页内容需要用到(爬虫常用)
import re /#正则表达式

1.显示出大体窗口

root = Tk()
#标题
root.title('猫老板签名设计')
#窗口大小     宽 高
root.geometry('600x300')
#窗口初始位置
root.geometry('-500+200')
#标签控件 后面
前面的操作都是在我们设定的这个窗口上进
label = Label(root,text = '签名',font = ('华文行楷',20),fg = 'blue')label.grid(row =0,column=0)#设计输入框entry = Entry(root,font=('微软雅黑',20))entry.grid(row =0,column=1)#点击按钮button = Button(root,text = '设计签名',font=('微软雅黑',22) command=download)button.grid(row =1,column=0)#消息循环 显示窗口root.mainloop()

这是第一阶段的效果图


其中注意几点:

1 .grid   pack   place 定位常见的三种方式。

gird(格)这些控件显示的位置按照大致下图的格点来分布,行列都是从0开始

(格的划分不是这样的,只是示意其起点以及大致分布)

我们这里采用的是 gird 

以上的代码编译是不成功的,因为在鼠标触发的事件我们还没有定义,在button的属性设置中 写command = download

2.类似lable button 等这些控件,面向这个对象,它有很多的属性可以直接设置。我们根据自己的需要设置好对应的字体,颜色,以及位置。

3.窗体出现的位置,大小,名称等这些用于修饰的东西,我们可以摸索着来,不断的实验,看看哪种好看,哪种美观。


2.编写下载函数。

def download():
    startUrl ='http://www.uustv.com/'
    #获取用户输入的姓名
    name = entry.get()
    #去空格
    name = name.strip()
    if name =='':
        messagebox.showinfo('提示:','请输入用户名')
函数的上半部分可以都算是,对输入框内容的判断以及处理

我们要模拟的签名网站的网址是 

http://www.uustv.com/

首先我们想这个网站的生成签名是如何做到的?

获取对话框的内容→访问服务器得到数据返回


所以我们要做的相当于模拟这个过程访问能生成这种签名的服务器,然后得到我们想要的

 else:
        date = {
            'word':name,
            'sizes':'60',
            'fonts':'jfcs.ttf',
            'fontcolor':'#000000'
        }
        result = requests.post(startUrl,data=date)
        result.encoding = 'utf-8'
        

在通过requests.post()进行POST请求时,传入报文的参数有两个,一个是data,一个是json。

发送请求的数据是怎么来的呢?


为了验证其正确性,换种签名形式,测试后发现是正确的,不同字体有不同的数据请求方式


知道了其数据方式,我们要来开始操作生成签名了

 html =result.text
        reg = '<div class="tu">.<img src="(.*?)"/></div>'

        #正则表达  (.*?)全部都需要匹配
        imagePath = re.findall(reg,html)
        #获取图片的完整路径
        imgUrl = startUrl + imagePath[0]
         #获取图片内容
        response = requests.get(imgUrl).content

先来说说看爬取图片的主要方式吧


打印出网页访问请求发现出现好多我们不需要的东西,因此我们要对数据进行一个筛选。


用正则表达式来筛选有效数据。

   reg = '<div class="tu">.<img src="(.*?)"/></div>'#(.*?)#匹配到该位置,即该地址出现的所有东西,无论是什么只要在 
正则这个符号代替的位置出现,我就匹配它

筛选后加上对应的网址就是我们需要的图片连接,得到链接我们就得可以进行下载了。

f = open('{}.gif'.format(name),'wb')
        f.write(response)

        #图片显示到窗口上
        bm = ImageTk.PhotoImage(file ='{}.gif'.format(name))

        label2= Label(root,image = bm)
        label2.bm = bm
        label2.grid(row = 2,columnspan= 2)

下载以后保存到本地,然后显示在窗体上,定义一个label2,对其属性进行改变,就可以调整图片的位置。基本上就完成了。虽然很简单的东西,但作为初学者,有好多东西都是查阅资料,问人等方式得到的。

最后附上源码

from tkinter import *
from tkinter import messagebox
from PIL import  Image,ImageTk
import requests
import re

#模拟浏览器发送请求
def download():

    startUrl ='http://www.uustv.com/'
    #获取用户输入的姓名
    name = entry.get()
    #去空格
    name = name.strip()
    if name =='':
        messagebox.showinfo('提示:','请输入用户名')
    else:
        date = {
            'word':name,
            'sizes':'60',
            'fonts':'jfcs.ttf',
            'fontcolor':'#000000'
        }
        result = requests.post(startUrl,data=date)
        result.encoding = 'utf-8'
        #获取网站的源代码
        html =result.text
        reg = '<div class="tu">.<img src="(.*?)"/></div>'
        #正则表达  (.*?)全部都需要匹配
        imagePath = re.findall(reg,html)
        #获取图片的完整路径
        imgUrl = startUrl + imagePath[0]
        print(imgUrl)
         #获取图片内容
        response = requests.get(imgUrl).content
        f = open('{}.gif'.format(name),'wb')
        f.write(response)

        #图片显示到窗口上
        bm = ImageTk.PhotoImage(file ='{}.gif'.format(name))

        label2= Label(root,image = bm)
        label2.bm = bm
        label2.grid(row = 2,columnspan= 2)
#创建窗口
root = Tk()
#标题
root.title('猫老板签名设计')
#窗口大小     宽 高
root.geometry('600x300')
#窗口初始位置
root.geometry('-500+200')
#标签控件
label = Label(root,text = '签名',font = ('华文行楷',20),fg = 'blue')
label.grid(row =0,column=0)

#设计输入框
entry = Entry(root,font=('微软雅黑',20))
entry.grid(row =0,column=1)
#点击按钮
button = Button(root,text = '设计签名',font=('微软雅黑',22)
                ,command =download)
button.grid(row =1,column=0)
#消息循环  显示窗口
root.mainloop()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值