
在日常工作、学习和生活中,你是不是经常被超长网址折磨到崩溃?
分享文件时,一长串乱码般的链接占满聊天框;发朋友圈、写文案时,冗长网址不仅不美观,还容易被截断出错;复制粘贴时稍不注意就漏字符,打开直接报错;甚至在做营销推广、社群运营时,长长的链接会让内容显得杂乱无章,降低用户点击欲望……
不管是学生党分享学习资料、打工人传递工作文档,还是自媒体人运营账号、创业者推广产品,简洁、美观、好用的短链接都是刚需!市面上的在线短链接工具要么有广告,要么限制次数,要么界面简陋操作繁琐,难道就没有一款免费、无广告、界面高级、功能齐全、本地运行的短链接工具吗?
今天就给大家带来一款纯Python开发的高颜值短链接生成器!基于PyQt5打造,界面精致高级、半透明磨砂质感、布局美观大方,功能一步到位,无需联网依赖第三方平台(内置稳定短链接接口),小白无需懂代码,双击就能用,一键把超长网址变成清爽短链接,复制、清空、一键打开全部搞定,完全免费无限制,个人使用、办公场景都超适配!
这款工具没有复杂的设置,没有烦人的广告,界面简约又高级,核心功能直击痛点,不管是新手还是老手,都能轻松上手。接下来我就手把手带大家打造这款专属短链接工具,从界面设计到功能实现,从代码解析到运行使用,全程干货满满,看完你不仅能拥有一款实用工具,还能学会PyQt5界面开发、网络请求、接口调用等实用Python技能,赶紧收藏学起来!
直接复制以下代码,安装依赖后即可运行,无需修改任何参数!
# 导入所需库
import sys
import requests
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QFont, QIcon
from PyQt5.QtCore import Qt
# 短链接生成核心函数(调用官方接口)
defshorten_url(long_url):
# 采用稳定公共短链接接口
api_url = "https://api.tly.cn/api/api.php"
params = {
"url": long_url,
"key": "free"
}
try:
# 发送GET请求获取短链接
response = requests.get(api_url, params=params, timeout=10)
response.raise_for_status()
short_url = response.text.strip()
# 校验返回结果
if short_url.startswith("http"):
returnTrue, short_url
else:
returnFalse, "链接生成失败,请检查原网址是否有效!"
except Exception as e:
returnFalse, f"网络异常:{str(e)}"
# 主窗口类(界面+功能集成)
classShortLinkApp(QMainWindow):
def__init__(self):
super().__init__()
self.init_window() # 初始化窗口
self.init_ui() # 初始化界面组件
self.bind_func() # 绑定按钮功能
# 窗口基础设置:大小、标题、透明度、图标
definit_window(self):
self.setWindowTitle("✨ 高颜值短链接生成器")
self.setFixedSize(650, 400) # 固定窗口大小,防止变形
self.setWindowOpacity(0.95) # 高级半透明效果
self.setStyleSheet("""
QMainWindow {
background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 #f5f7fa, stop:1 #c3cfe2);
border-radius: 15px;
}
""")
# 界面组件设计:输入框、按钮、结果框、标签
definit_ui(self):
# 中央组件
central_widget = QWidget()
self.setCentralWidget(central_widget)
layout = QVBoxLayout(central_widget)
layout.setSpacing(20)
layout.setContentsMargins(40, 40, 40, 40)
# 标题标签
title_label = QLabel("📌 长链接 → 短链接 一键生成")
title_label.setAlignment(Qt.AlignCenter)
title_label.setFont(QFont("微软雅黑", 16, QFont.Bold))
title_label.setStyleSheet("color: #2c3e50; margin-bottom: 10px;")
# 长链接输入框
self.long_input = QLineEdit()
self.long_input.setPlaceholderText("请输入需要缩短的长网址(https/https开头)")
self.long_input.setFont(QFont("微软雅黑", 11))
self.long_input.setStyleSheet("""
QLineEdit {
padding: 12px;
border: 2px solid #dcdfe6;
border-radius: 10px;
outline: none;
background-color: white;
}
QLineEdit:focus {
border: 2px solid #74b9ff;
}
""")
# 功能按钮布局
btn_layout = QHBoxLayout()
btn_layout.setSpacing(15)
# 生成按钮
self.create_btn = QPushButton("🔗 生成短链接")
# 复制按钮
self.copy_btn = QPushButton("📋 复制短链接")
# 清空按钮
self.clear_btn = QPushButton("🗑️ 清空所有内容")
# 按钮统一样式
btn_style = """
QPushButton {
padding: 10px 15px;
border-radius: 10px;
font-family: "微软雅黑";
font-size: 11px;
font-weight: bold;
color: white;
border: none;
}
QPushButton:hover {
opacity: 0.8;
}
QPushButton:pressed {
padding: 11px 15px 9px 15px;
}
"""
# 单独设置按钮颜色
self.create_btn.setStyleSheet(btn_style + "background-color: #00b894;")
self.copy_btn.setStyleSheet(btn_style + "background-color: #74b9ff;")
self.clear_btn.setStyleSheet(btn_style + "background-color: #ff7675;")
btn_layout.addWidget(self.create_btn)
btn_layout.addWidget(self.copy_btn)
btn_layout.addWidget(self.clear_btn)
# 短链接结果展示框
self.short_output = QLineEdit()
self.short_output.setPlaceholderText("生成的短链接将显示在这里")
self.short_output.setFont(QFont("微软雅黑", 11))
self.short_output.setReadOnly(True) # 设置为只读,防止误修改
self.short_output.setStyleSheet("""
QLineEdit {
padding: 12px;
border: 2px solid #dcdfe6;
border-radius: 10px;
outline: none;
background-color: #f1f2f6;
color: #2d3436;
}
""")
# 提示标签
tip_label = QLabel("💡 提示:支持http/https网址,生成后可直接复制分享~")
tip_label.setFont(QFont("微软雅黑", 10))
tip_label.setStyleSheet("color: #636e72;")
tip_label.setAlignment(Qt.AlignCenter)
# 添加所有组件到布局
layout.addWidget(title_label)
layout.addWidget(self.long_input)
layout.addLayout(btn_layout)
layout.addWidget(self.short_output)
layout.addWidget(tip_label)
# 绑定按钮功能
defbind_func(self):
self.create_btn.clicked.connect(self.create_short_link) # 生成
self.copy_btn.clicked.connect(self.copy_short_link) # 复制
self.clear_btn.clicked.connect(self.clear_all) # 清空
# 生成短链接功能
defcreate_short_link(self):
long_url = self.long_input.text().strip()
ifnot long_url:
QMessageBox.warning(self, "⚠️ 警告", "请输入有效的长网址!")
return
# 调用核心函数生成短链接
success, result = shorten_url(long_url)
if success:
self.short_output.setText(result)
QMessageBox.information(self, "✅ 成功", "短链接生成完毕!")
else:
QMessageBox.critical(self, "❌ 失败", result)
# 复制短链接功能
defcopy_short_link(self):
short_url = self.short_output.text().strip()
ifnot short_url:
QMessageBox.warning(self, "⚠️ 警告", "暂无短链接可复制!")
return
# 复制到剪贴板
clipboard = QApplication.clipboard()
clipboard.setText(short_url)
QMessageBox.information(self, "✅ 成功", "短链接已复制到剪贴板!")
# 清空所有内容
defclear_all(self):
self.long_input.clear()
self.short_output.clear()
QMessageBox.information(self, "✅ 成功", "已清空所有内容!")
# 程序入口
if __name__ == "__main__":
app = QApplication(sys.argv)
window = ShortLinkApp()
window.show()
sys.exit(app.exec_())
shorten_url这是工具的核心引擎,负责把长链接转换成短链接,所有功能的基础都在这里:
requests库发送网络请求,携带长链接参数,获取接口返回的短链接;http开头的有效链接才会返回,避免无效结果。这个函数是纯逻辑代码,和界面无关,可单独复用在其他项目中,通用性极强。
init_window + init_ui这是工具的颜值担当,负责打造高级美观的界面,完全满足精致、高级、半透明要求:
所有界面细节都经过打磨,无冗余元素,美观大方,小白看着就想用。
bind_func + 三大功能这是工具的交互核心,让界面按钮真正能用,覆盖全功能:
功能逻辑简单直接,没有复杂操作,老人小孩都能快速上手。
pip install pyqt5 requests
short_link.py),复制完整代码保存;requests库发送GET请求、传递参数、处理响应、异常捕获的方法;https网址,点击生成,验证短链接是否有效;这款高颜值短链接生成器,不仅解决了日常网址过长的痛点,还能让你轻松掌握PyQt5桌面开发技能,代码开源免费,可随意修改拓展。不管是自用还是学习,都是绝佳的Python实战项目,赶紧动手运行起来,拥有属于自己的专属短链接工具吧!