引言声明文件结构编写界面
交互界面(main-get.xml)链接显示界面 编写TinUIXml-IDO完整代码效果结语
引言CSDN是一个充满各种编程知识的技术网站,无论是小白还是大神都可以在这里找到对自己有用的文章。一些人有自己关注的博主,那是因为这个博主的系列文章正好对上了自己的胃口。那么现在我们将开发一个基于tkinter的小程序,以获取某一个博主的文章,并用链接形式呈现到TinUI界面上。
声明我不是做爬虫的,只是使用类似的功能代码而已。
本项目属于作者原创,禁止用于非法途径。功能代码部分十分简单,因此着重说明界面部分的编写。
本项目使用的TinUI为我开源并维护在GitHub上的主文件——TinUI.py。当然,使用PYPI中下载安装的tinui也可以
文件结构本次使用的文件结构如下:
main-get.xml - 主界面tinui.py - TinUI界面核心支持博客获取.py - 本次项目文件 编写界面
在本项目中,界面主要由两部分组成:
- 交互部分:显示输入框等交互控件显示部分:显示获取到的所有博客链接
这个交互界面十分简单,只有两个主要控件,与本系列第一篇文章“天气预报”的交互部分一模一样。
以下是main-get.xml的内容:
链接显示界面entry
因为我们无法确定博客文章的数量,所以没办法将界面布局写在xml文件中。
虽然我们需要动态添加界面布局元素,但是我们可以确定我们显示的所有链接(link)控件元素的排列方式:
...
这个类xml形式的字符串,将在循环代码中动态添加。在源码中,使用__go函数来执行这个链接显示界面的控件渲染:
def __go(): button[1]() url=entry.get() if url=='': return urls_xml='' result=request.urlopen(url) html=result.read().decode('utf-8') links=read_html(html) x2.clean() for link in links: add=f' ' x2.loadxml(urls_xml)' urls_xml+=add urls_xml+='
编写TinUIXml-IDO变量add就是我们动态添加的控件xml描述文本。
这次基本没什么前后端融合代码:
#=====IDO===== u=BasicTinUI(root,height=50)#主界面 u.pack(fill='both',expand=True) x=TinUIXml(u) u2=TinUI(root)#显示链接 u2.pack(fill='both',expand=True) x2=TinUIXml(u2) #in x.funcs['go']=go #during with open('main-get.xml',mode='r',encoding='utf-8') as f: xml=f.read() x.loadxml(xml) #out entry=x.tags['entry'][0] button=x.tags['button'][2]完整代码
网络请求与正则解析部分相信大家都很熟悉了,这里直接给出完整代码:
from urllib import request from tkinter import Tk import re import time import random from threading import Thread from tinui import * def go(event): Thread(target=__go).start() def __go(): button[1]() url=entry.get() if url=='': return urls_xml='' result=request.urlopen(url) html=result.read().decode('utf-8') links=read_html(html) x2.clean() for link in links: add=f' ' x2.loadxml(urls_xml) def read_html(html):#解析HTML article_div=re.findall('(.*?)' urls_xml+=add urls_xml+=' 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)