from tkinter import *
from tkinter import messagebox,ttk
from PIL import ImageTk
import requests
import re # 获取签名图片
def download():
startUrl = "http://www.uustv.com/"
# 获取用户输入
name = entry.get()
# 获取样式
style = numberChosen.current() # 获取索引
# 去空格
name = name.strip()
if name == "":
messagebox.showinfo('提示',"请输入名字")
else:
font = {
'':'jfcs.ttf',
'':'qmt.ttf',
'':'bzcs.ttf',
'':'lfc.ttf',
'':'haku.ttf',
'':'zql.ttf',
'':'yqk.ttf'
}
# 模拟网页发送数据
data={
'word':name,
'sizes':'',
'fonts': font[str(style)],
'fontclor':'#000000'
}
result = requests.post(startUrl,data=data)
result.encoding="utf-8"
html = result.text
# 正则表达式
reg = '<div class="tu"><img src="(.*?)"/></div>'
imgPath =re.findall(reg,html)
imgUrl = startUrl + imgPath[0]
response = requests.get(imgUrl).content
# 保存图片
with open("{}.gif".format(name),'wb') as f:
f.write(response)
# 显示图片
bm = ImageTk.PhotoImage(file='{}.gif'.format(name))
lable2 = Label(root,image=bm)
lable2.bm = bm
# columnspan 组件所跨越的列数
lable2.grid(row=2,columnspan=4)
# 创建窗口
root = Tk()
# 获取屏幕的宽与高
sw = root.winfo_screenwidth()
sh = root.winfo_screenheight()
# 标题
root.title("签名设计")
# 窗口大小 小写的x
root.geometry("600x300")
# 窗口出现位置 px
# root.geometry("+500+300") # 目前是写死的
root.geometry("+%d+%d"%((sw-600)/2,(sh-300)/2))
# 窗口图标
root.iconbitmap('f:\\favicon.ico')
# 标签控件
lable = Label(root,text="签名:",font=('华文行楷',20),fg='red')
# place pack 位置 grid 网格式布局
# 定位控件
lable.grid(row=0,column=0)
# 输入框
entry = Entry(root,width=20,font=('微软雅黑',15))
entry.grid(row=0,column=1)
entry.focus() #当程序运行时,光标默认出现的位置
#下拉标签
lable3 = Label(root,text='样式:',font=('华文行楷',20),fg='red')
lable3.grid(row=0,column=2) # 下拉列表
number = StringVar()
numberChosen = ttk.Combobox(root,width=10,font=('华文行楷',20),textvariable=number,state='readonly')
numberChosen['values']=('个性签','连笔签','潇洒签','草体签','合文签','商务签','可爱签')
numberChosen.grid(row=0,column=3)
numberChosen.current(0)
# 点击按钮 command 按钮触发函数
button = Button(root,text='设计签名',font=('微软雅黑',10),command = download)
# button['width'] = 10
# button['height'] = 1
# 对齐方式 E,W N,S
button.grid(row=1,column=3,sticky=E) # 显示窗口
root.mainloop()

利用用python构建 个性化签名的更多相关文章

  1. 用Python构建你自己的推荐系统

    用Python构建你自己的推荐系统 现如今,网站用推荐系统为你提供个性化的体验,告诉你买啥,吃啥甚至你应该和谁交朋友.尽管每个人口味不同,但大体都适用这个套路.人们倾向于喜欢那些与自己喜欢的其他东西相 ...

  2. 使用Boost.Python构建混合系统(译)

    目录 Building Hybrid Systems with Boost.Python 摘要(Abstract) 介绍(Introduction) 设计目标 (Boost.Python Design ...

  3. python构建bp神经网络_曲线拟合(一个隐藏层)__2.代码实现

    IDE:jupyter 抽象程度可能不是那么高,以后再优化. 理论和代码实现的差距还是挺大的 数据集请查看 python构建bp神经网络(一个隐藏层)__1.数据可视化 部分代码预览 git上传.ip ...

  4. 【311】Python 构建 ArcMap 标注表达式

    参考:构建标注表达式(官方帮助) 参考:计算字段示例(官方帮助) 说明:以上两者的方法略有不同,一个是通过字段表达式显示标注,一个通过字段计算新的字段,使用的工具方法也不同,前者通过 Layer.la ...

  5. 用 Python 构建 web 应用

    用 Python 构建 web 应用 如果说仅仅要用 Python 构建 web 应用,可以将 socket 连接.HTTP 原始请求和响应格式等涉及网络基础的东西交给现成的库来实现,只需要专注于 w ...

  6. Python-黑客-004 用Python构建一个SSH僵尸网络-02 手动与SSH交互

    用Python构建一个SSH僵尸网络-02 手动与SSH交互 - 登录SSH服务器端的 root 用户 我的电脑(攻击者)的系统:Ubuntu14.04 : 用户名: aobosir@ubuntu:~ ...

  7. Python 黑客 004 用Python构建一个SSH僵尸网络 01 简介

    用Python构建一个SSH僵尸网络 01 简介 一. 构建一个SSH僵尸网络的流程图: Created with Raphaël 2.1.0手动操作,实现通过SSH连接目标服务器(手动)用 Pexp ...

  8. OpenAI的GPT-2:用Python构建世界上最先进的文本生成器的简单指南

    介绍 "The world's best economies are directly linked to a culture of encouragement and positive f ...

  9. 使用OpenCV和Python构建自己的车辆检测模型

    概述 你对智慧城市的想法感到兴奋吗?如果是的话,你会喜欢这个关于建立你自己的车辆检测系统的教程的 在深入实现部分之前,我们将首先了解如何检测视频中的移动目标 我们将使用OpenCV和Python构建自 ...

随机推荐

  1. iOS UI-IOS开发中Xcode的一些使用技巧

    一.快捷键的使用 经常用到的快捷键如下: 新建 shift + cmd + n     新建项目 cmd + n             新建文件 视图 option + cmd + 回车 打开助理编 ...

  2. 简话Angular 04 Angular过滤器详解

    一句话: filter是万能的数据处理器,可以过滤数据,排序数据,删除数据,扩展数据 1. 内置filter大全 url: https://docs.angularjs.org/api/ng/filt ...

  3. O(logn)二叉树中的意义----高性能(四)

    转载地址:https://zhidao.baidu.com/question/239708227508660244.html?qbl=relate_question_2&word=%CA%B1 ...

  4. 关于PermGen space内存溢出错误解决方法

    1.参考: http://blog.csdn.net/fox009/article/details/5633007 http://hi.baidu.com/like_dark/blog/item/19 ...

  5. Vue 组件中 移动 this.$el 的注意事项

    比如, mounted () { document.body.appendChild(this.$el); // insertAdjacentElement // insertBefore}, 这几行 ...

  6. web端ip定位

    1/新浪定位 <script src="http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js">&l ...

  7. DevExpress v18.1新版亮点——ASP.NET Bootstrap篇(一)

    用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress ASP.NET Bootstrap v18.1 的新功能,快 ...

  8. DevExpress v17.2新版亮点——CodeRush篇(二)

    用户界面套包DevExpress v17.2日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了CodeRush v17.2 的新功能,快来下载试用新版本! 支持XAML 标记扩 ...

  9. C++语言的一些问题

    论坛上看到的有人提出的关于C++的一些问题,真是细致(下面还有回复说他对C++一知半解的),一直以为自己的C++还是可以的,可是看了之后真是内牛满面,为什么自己从来没有想的这么深入,差距真的有这么大吗 ...

  10. C#中datagridview选中行后textbox显示选中的内容

    我想让datagridview中某一行被选中时,textbox中显示选中的值,datagridview的选中模式是整行:this.dataGridView1.SelectionMode = DataG ...