python tkinter做UI界面

系统 1747 0

使用Python内置的tkinter写界面

里面的爬虫代码是爬取网易云音乐的电台专栏,代码讲解链接在我上一篇博客:https://blog.csdn.net/congcong7267/article/details/95625653

代码

            
              # -*- coding: utf-8 -*-
import tkinter.messagebox
from tkinter import *
from tkinter import ttk
from PIL import Image, ImageTk
import random
from selenium.webdriver.chrome.options import Options
from selenium import webdriver

def get_result1(): #电台专栏里的推荐节目
    # 实例化一个启动参数对象
    chrome_options = Options()
    # 设置浏览器以无界面方式运行
    # chrome_options.add_argument('--headless')
    # browser = webdriver.Chrome(chrome_options=chrome_options)
    browser = webdriver.Chrome()
    browser.maximize_window()  # 窗口最大化
    browser.get('https://music.163.com/#/discover/djradio')  # URL
    browser.implicitly_wait(30)  # 隐示等待,为了等待充分加载好网址
    # browser.switch_to.frame("app_canvas_frame")   #转换到我们需要的数据的frame,一定不要忘记
    browser.switch_to.frame("contentFrame")
    result_list = browser.find_element_by_class_name("f-fl").find_elements_by_class_name("itm")
    return result_list

def get_result2(): #电台专栏里的节目排行榜
    # 实例化一个启动参数对象
    chrome_options = Options()
    # 设置浏览器以无界面方式运行
    #chrome_options.add_argument('--headless')
    #browser = webdriver.Chrome(chrome_options=chrome_options)
    browser = webdriver.Chrome()
    browser.maximize_window()  # 窗口最大化
    browser.get('https://music.163.com/#/discover/djradio')  # URL
    browser.implicitly_wait(30)  # 隐示等待,为了等待充分加载好网址
    # browser.switch_to.frame("app_canvas_frame")   #转换到我们需要的数据的frame,一定不要忘记
    browser.switch_to.frame("contentFrame")
    result_list = browser.find_element_by_class_name("f-fr").find_elements_by_class_name("itm")
    return result_list


def click(): #btn1点击事件
    x = tree.get_children()
    for item in x:
        tree.delete(item)
    #删除原来tree里面的内容
    # 表格的标题
    size = int((max_w - 60) / 4)
    tree.column("a", width=size, anchor="center")
    tree.column("b", width=size, anchor="center")
    tree.column("c", width=size, anchor="center")
    tree.column("d", width=size, anchor="center")
    #tree.column("e", width=size, anchor="center")
    tree.heading("a", text="电台名")
    tree.heading("b", text="简介")
    tree.heading("c", text="类型")
    tree.heading("d", text="链接")
    #tree.heading("e", text="其它")
    vbar.pack(side=tkinter.RIGHT, fill=tkinter.Y)
    tree.pack()
    # 插入数据
    result_list = get_result1()
    for result in result_list:
        name = result.find_element_by_class_name("s-fc4").text  # 电台名
        subscribe = result.find_element_by_class_name("s-fc1").text  # 简介
        type = result.find_element_by_class_name("u-type").text  # 类型
        url = result.find_element_by_class_name("s-fc1").get_attribute("href")  # 链接
        #print("电台名:{},简介:{},类型:{},url:{}".format(name, subscribe, type, url))
        tree.insert('', 'end', values=[name, subscribe, type, url])



def click2(): #btn2点击事件
    x = tree.get_children()
    for item in x:
        tree.delete(item)
    #删除原来tree里面的内容
    # 表格的标题
    size = int((max_w - 60) / 4)
    tree.column("a", width=size, anchor="center")
    tree.column("b", width=size, anchor="center")
    tree.column("c", width=size, anchor="center")
    tree.column("d", width=size, anchor="center")
    tree.heading("a", text="排名")
    tree.heading("b", text="节目名")
    tree.heading("c", text="URL")
    tree.heading("d", text="")
    vbar.pack(side=tkinter.RIGHT, fill=tkinter.Y)
    tree.pack()
    # 插入数据
    result_list = get_result2()
    for result in result_list:
        rank = result.find_element_by_class_name("f-fs1").text  # 排名
        name = result.find_element_by_class_name("s-fc1").text  # 节目名
        url = result.find_element_by_class_name("f-fw0").get_attribute("href")  # 链接
        tree.insert('', 'end', values=[rank, name, url,""])


root = tkinter.Tk()
root.title("数据查询窗口")
# 设置窗口居中
# max_w:屏幕最大宽度,max_h:屏幕最大高度
max_w, max_h = root.maxsize()
# 窗口的宽度和高度
root_w = max_w
root_h = max_h
# 计算中心坐标
cen_x = (max_w - root_w) / 2
cen_y = (max_h - root_h) / 2
# 设置窗口大小和位置
root.geometry('%dx%d+%d+%d' % (root_w, root_h, cen_x, cen_y))
frame_tools = Frame(width=max_w, height=150, bg='#dddddd')
frame_list = Frame(width=max_w, height=max_h-150, bg='#FFFFFF')
tree = ttk.Treeview(frame_list, show="headings", height=100, columns=("a", "b", "c", "d"))
vbar = ttk.Scrollbar(frame_list, orient=VERTICAL, command=tree.yview)
tree.configure(yscrollcommand=vbar.set)
btn1 = tkinter.Button(frame_tools, text='推荐 电台', font=("微软雅黑", 9),command = click).place(x=max_w/2-150,y=75)
btn2 = tkinter.Button(frame_tools, text='节目排行榜', font=("微软雅黑", 9),command = click2).place(x=max_w/2+150,y=75)

frame_tools.pack()
frame_list.pack()
for i in range(100):
    tree.insert('', 'end', values=[i + 1, "", random.randint(1, 10), "".format(i + 1)])

tkinter.mainloop()

            
          

运行截图:

 

python tkinter做UI界面_第1张图片

python tkinter做UI界面_第2张图片

 

 


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论