使用python的内置模块tkinter编写了爬取51Ape网站(无损音乐的百度云链接)的UI界面

tkinter入门简单, 但同时在编写的过程中因为文档的缺少很不方便。

下面是UI界面模块的编写,由于爬虫方面由于网站没有反爬非常简单,就不显示出来了

UI类在初始化时会加载所有歌手信息, 下拉框绑定了<>事件,请求歌手的歌曲信息显示在listbox, listbox绑定了双击事件请求该歌曲的百度云链接及提取码。

from tkinter import *

from tkinter import ttk

import tkinter.font as tkFont

from .spider import get_singer_info, get_all_song, get_song_link

song_info = {}

# 定义适合的函数创建框架和更简洁的按钮, 增加程序的易读性

def labelframe(root):

w = LabelFrame(root)

w.pack(fill=X, padx=15, pady=8)

return w

def label(root, text, font):

w = Label(root, text=text, bg='blue', fg='white', width=6, font=font)

w.pack(fill=X, padx=10, side=LEFT)

return w

def frame(root, side):

w = Frame(root)

w.pack(side=side, expand=YES, fill=BOTH, padx=10, pady=8)

return w

def combobox(root, variable, font):

w = ttk.Combobox(root, textvariable=variable, width=10, font=font)

w.pack(fill=X, padx=5, side=LEFT)

return w

def entry(root, font):

w = Entry(root, width=12, font=font)

w.pack(padx=5, fill=X, side=LEFT)

return w

def listbox(root, font):

w = Listbox(root, height=10, width=22, font=font)

w.pack(side=LEFT, fill=X, expand=YES)

return w

def scrollbar(root, orient, side, fill, command=None):

w = Scrollbar(root, orient=orient, command=command)

w.pack(side=side, fill=fill)

return w

def font(family, size):

w = tkFont.Font(family=family, size=size)

return w

class AppUI(Frame):

def __init__(self):

tk = Tk() # 实例化tk对象

self.singer = StringVar() # 定义一个可供内容存取的tkinter的变量

ft = font(family='Calibri', size=10) # 定义字体 family:字体类型名的字符串;size:以点为单位的字体高度

lf = labelframe(tk) # LabelFrame 组件是 Frame 组件的变体。默认情况下,LabelFrame 会在其子组件的周围绘制一个边框以及一个标题。

top_frame = frame(lf, side=TOP) # 定义容器frame,side=TOP sdie停靠在父组件的那一边上,默认TOP

label(top_frame, text='Singer', font=ft) # 标签

self.cbb = combobox(top_frame, self.singer, font=ft) # 下拉框

self.cbb['values'] = tuple([key for key in get_singer_info().keys()]) # 初始化下拉框的值

self.cbb.bind("<>", self.change) # 下拉框绑定选择事件

bottom_frame = frame(lf, TOP)

band = frame(bottom_frame, TOP)

self.listbox = listbox(band, font=ft) # listbox

self.listbox.bind('', self.open_link) # listbox绑定双击事件

vertical_bar = scrollbar(band, orient=VERTICAL, side=RIGHT, fill=Y, command=self.listbox.yview) # 创建滚动条 orient1. 指定绘制 HORIZONTAL(垂直滚动条)还是 VERTICAL(水平滚动条)2. 默认值是 VERTICAL command 1.当滚动条更新时回调的函数 2.通常的是指定对应组件的 xview() 或 yview() 方法

self.listbox['yscrollcommand'] = vertical_bar.set # 设置竖直滚动条

horizontal_bar = scrollbar(bottom_frame, orient=HORIZONTAL, side=BOTTOM, fill=X, command=self.listbox.xview)

self.listbox['xscrollcommand'] = horizontal_bar.set # 设置水平滚动条

footer_frame = frame(lf, TOP)

label(footer_frame, text='Key', font=ft)

self.ekey = entry(footer_frame, font=ft)

tk.title('51Api') # 修改窗口名

tk.update() # 刷新页面 刷新winfo_width, winfo_height

curWidth = tk.winfo_width()

curHeight = tk.winfo_height()

scnWidth, scnHeight = tk.maxsize()

size = '+%d+%d' % ((scnWidth - curWidth) / 2, (scnHeight - curHeight) / 2)

tk.geometry(size) # %dx%d+%d+%d 第一个数横大小,第二个数纵大小,第三个数离左屏幕边界距离,第四个数离上面屏幕边界距离

tk.mainloop() # 进入消息循环

def change(self, event):

self.listbox.delete(0, END)

get_all_song(self.cbb.get())

from .spider import song_queue

while True:

if song_queue.empty():

break

song = song_queue.get()

self.listbox.insert('end', song[0])

song_info[song[0]] = song[1]

def open_link(self, event):

from webbrowser import open

down_link, down_key = get_song_link(song_info[self.listbox.selection_get()])

self.ekey.delete(0, END)

self.ekey.insert(0, down_key)

open(down_link)

if __name__ == "__main__":

AppUI()

pythonp爬虫做界面_tkinter 实现爬虫的UI界面相关推荐

  1. android做试卷的页面,《Android UI界面设计》17移动互联网A卷试题和答案(3页)-原创力文档...

    广州市蓝天技工学校质量记录 期末考试试卷 编号:QD-0812-22 A/0 流水号: 2018 -2019 学年度第一学期 2017级移动互联网应用技术高技专业<UI界面设计>试卷答案 ...

  2. qt生成无ui界面动态库,有ui界面的动态库,以及含有资源文件和qss文件的动态库

    提要 此文分别就qt生成纯代码的动态库,含有ui文件的动态库以及含有资源文件qss文件和切图的动态库. 实现 1.纯代码的生成qt库.即没有ui文件的项目. 打开QtCreate,新建文件,选择lib ...

  3. autojsui界面关闭_autojs 第九次 ui界面交互获取

    //ui界面按钮与实际功能集合 "ui"; ui.layout( ); ui.ok.click(function(){ toast("启动脚本") sleep( ...

  4. python使用界面-用python编写简单ui界面窗口

    学习了Python编程语言之后,可以做许多有趣的事情.例如可以使用python设计一个窗口,现在小编将使用tkinter为大家演示创建一个小窗口,设置了2个按钮,一个是btn关闭窗口,另一个是btn用 ...

  5. python界面-用python编写简单ui界面窗口

    学习了Python编程语言之后,可以做许多有趣的事情.例如可以使用python设计一个窗口,现在小编将使用tkinter为大家演示创建一个小窗口,设置了2个按钮,一个是btn关闭窗口,另一个是btn用 ...

  6. 科技感ui界面 html,未来科技感UI界面设计欣赏

    来源:uicn   作者:冷云 FUI意思可以是Fantasy User Interface 幻想使用者界面, Fictional User Interfaces 科幻使用者界面,Fake User ...

  7. 结合html做界面_Spark UI界面实现原理

    当Spark程序在运行时,会提供一个Web页面查看Application运行状态信息.是否开启UI界面由参数spark.ui.enabled(默认为true)来确定.下面列出Spark UI一些相关配 ...

  8. 【Unity3D编辑器扩展】Unity3D中实现UI界面控制,UI界面的显示和隐藏实现

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有 ...

  9. spark的UI界面解析

    一:spark的UI界面 二:spark的UI界面解析 1 代表job页面,在里面可以看到当前应用分析出来的所有任务,以及所有的excutors中action的执行时间. 页可以分为两部分,一部分是e ...

最新文章

  1. 看2021年2月苏州各区新房均价,谈一点个人的思考
  2. 再谈select, iocp, epoll,kqueue及各种I/O复用机制 - Shallway - 博客频道 - CSDN.NET
  3. 【Socket网络编程】6.两个既能收也能发的udp客户端进行通信的原理
  4. html棍子英雄电脑版源码,英雄难过棍子关电脑版
  5. python--通过xpath相对节点位置查找元素(续)
  6. 32 SD配置-合作伙伴确认-设置客户主数据的合作伙伴确定
  7. Oracle DBA必须学会的11个Linux基本命令
  8. 【JSON】FastJson 打印输格式化输出
  9. 两相电机倒顺开关的接法是什么?
  10. Hyper-V虚拟化测试12非计划的故障转移
  11. linux 内核usb,Linux 内核示例程序 usb_skeleton.c 详解
  12. 卸载symantec endpoint protection
  13. 中望cad自定义快捷键命令_中望cad常用快捷键及命令
  14. 小葵花妈妈课堂之Nginx Rewirte
  15. 第十章 事件event
  16. 13. nginx四层 https代理https 前后端证书配置
  17. OpenFeign学习
  18. PROFINET协议解析-DCP
  19. 易基因项目文章|DNA(羟)甲基化研究揭示铁离子依赖表观调控促进狼疮致病性T细胞分化
  20. Proj4js西安坐标系定义分享

热门文章

  1. 啥?下载的文件显示“文件已损坏,无法打开”?
  2. 基于gradle构建Java应用程序
  3. 人工智能学习笔记 感知器算法的设计实现 感知器准则实现多类分类
  4. linux获取图标接口,Linux ioctl接口
  5. NX二次开发-UFUN打开选择文件夹对话框UF_UI_create_filebox
  6. 项目管理软件四大作用介绍
  7. #1474 : 拆字游戏
  8. 【iOS取证篇】iPhone8及以上版本进入恢复模式和DFU模式的操作方法
  9. 大公司都在做的大数据平台,为你精选这一份书单
  10. 机器学习【西瓜书/南瓜书】--- 第2章模型评估与选择(上)(学习笔记+公式推导)