30多岁开始学python_东拼西凑学Python,这是一个坑,这是多么丑

# -*- coding: UTF-8 -*-

# 大多数代码来源于网上的各个片段,不会侵权。为了新手友好保留了所有注释。并且我还加了很多,防止明天我自己看不懂了

import tkinter as tk # 安装python自带,桌面UI专用

import requests #如果运行这里都30c.org报错,那只能pip install 了

import subprocess #剪切板控制,mac专用,windows没有这个包

import pyperclip #剪切板控制,windows专用,MAC没有这个包

from tkinter import END # 单独把这个申明blog.30c.org是因为后面的往text控件插入内容会报错

from lxml import etree #用pyinstaller打包记得额外导入

# 以下3行适用于python2,3已经用不到了。作用是解决30c.org界面显示是乱码

# import sys

# reload(sys)

# sys.setdefaultencoding(‘utf8’)

# 顶层窗口的实例(Top Level),也称为根窗口

# #——————————窗口———————————–#

window = tk.Tk() # 创建最上层主窗口

window.title(“30c.org小工具”) # 窗口标题

window.geometry(“900×600”) # 窗口大小,中间是英文x,而不能是运算符*

# lable 组件是显示文字或图片,第一个参数是父窗口名称。

# text,参数显示内容,\n用来换行。每一行居中显示,靠左显示没研究,不需要,没那么高的要求。

# font字体,窗口太大,不设置字体,就会很小。

# place是依据主窗口的相对位置,,x就是x轴,下面所有的控件都需要这样定位

tk.Label(window, text=”使用说明:\n仅支持测试学习\n输入要处理的网址后点击获取”, font=(“宋体”, 14)).place(x=50, y=20)

tk.Label(window, text=”网址:”, font=(“宋体”, 20)).place(x=50, y=100)

labText = tk.StringVar()

labelShow = tk.Label(window, textvariable=labText, font=(“宋体”, 14), fg=’#FF0000′).place(x=50, y=300)

# Text组件用于显示和处理多行文本。我用来展示程序的运行状态,输出到这个组件里面

show_text = tk.Text()

show_text.place(x=320, y=150)

# 滚动条

scroll = tk.Scrollbar()

scroll.pack(side=tk.RIGHT, fill=tk.Y) # side是滚动条blog.30c.org放置的位置,上下左右。fill是将滚动条沿着y轴填充

show_text.pack(side=tk.RIGHT, fill=tk.Y) # 将文本框填充进窗口的左侧

scroll.config(command=show_text.yview) # 将文本框关联到滚动条上,滚动条滑动,文本框跟随滑动

show_text.config(yscrollcommand=scroll.set) # 将滚动条关联到文本框

# Entry输入框,输入的值必须要定义,这里定义成字符串类型

var_url = tk.StringVar()

var_title = tk.StringVar()

# Entry输入框,输入的值必须要定义

entry_url = tk.Entry(window, textvariable=var_url)

entry_url.place(x=50, y=150)

entry_title = tk.Entry(window, textvariable=var_title)

entry_title.place(x=50, y=350)

# 剪切板复制

def writePb(tempStr):

# 以下注释为mac平台

# p = subprocess.Popen([‘pbcopy’], stdin=subprocess.PIPE)

# p.stdin.write(tempStr.replace(‘ ’, ‘\n’))

# p.stdin.close()

# p.communicate()

pyperclip.copy(tempStr.replace(‘ ’, ‘\n’)) #windows So easy

# 按钮组件点击触发的函数,我把输入框的获取到30c.org的两个值输出到Text控件

# END就是插入到Text控件里面最后。

# .get就是获取目标的输入框的方法

def get_tar():

url = var_url.get()

if url == “”:

labText.set(“请输入网址”)

else:

res = requests.get(url)

tree = etree.HTML(res.content)

title = tree.xpath(‘//title/text()’)[0]

var_title.set(title.replace(‘ ‘, ”))

content = tree.xpath(‘//div[@class=”atlas_share_text”]’)[0]

content_str = etree.tostring(content, encoding=’utf-8′)

content_str = content_str.decode() #python3需要,2可以去掉

# 写的太挫了,就是不想改

show_text.delete(‘1.0’, ‘end’) # 清空原内容,难道没有直接清空的方法么。还不如java

show_text.insert(END, content_str.replace(‘ ’, ‘\n’)) #奇怪的网站带了很多奇怪的空格

writePb(content_str)

labText.set(‘复制正文成功’)

# Button组件,按钮组件,主要是触发一些功能,command指向一个函数就只触发的功能函数

get_detail = tk.Button(window, text=’获取’, font=’20’, command=get_tar)

get_detail.place(x=170, y=100)

def getTitle():

writePb(var_title.get())

labText.set(‘复制标题成功’)

butTitle = tk.Button(window, text=”复制标题”, font=’20’, command=getTitle)

butTitle.place(x=50, y=250)

def getContent():

writePb(show_text.get(‘1.0’, ‘end’))

labText.set(‘复制正文成功’)

butContent = tk.Button(window, text=”复制正文”, font=’20’, command=getContent)

butContent.place(x=150, y=250)

# 启动主窗口循环

window.mainloop()

# ———————————窗口————————————–#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值