1、创建页面信息
# 读取屏幕的 大小
desktop = QDesktopWidget()
win_width = desktop.screenGeometry().width()
win_height = desktop.screenGeometry().height()
self.app_width = 1000
self.app_height = 600
self.setGeometry((win_width - self.app_width) / 2, (win_height - self.app_height) / 2, 1000, 600)
self.setWindowTitle('Pyqt5 示例')
img_io = io.BytesIO(win_icon)
img = Image.open(img_io)
ico = img.toqpixmap()
self.setWindowIcon(QIcon(ico))
# 显示窗口
self.show()
注:这里读取了屏幕的大小,使页面显示在屏幕的中心位置,图标读取图片bytes,也防止打包后图标不显示的问题
效果图:
2、增加链接输入框和启动按钮、日志框
这里是一个QLineEdit 输入框 和QPushButton按钮、 QTextBrowser文本,很简单,就不贴代码了
3、业务逻辑代码
def start_data(self):
start_text = self.start_button.text()
if start_text == '开始':
self.start_button.setText('结束')
link = self.link.text()
if link:
self.settings.setValue('LINK', link)
self.s_t = LinkThread(link)
self.s_t._signal.connect(self.receive_result) # 连接信号
self.s_t.start()
else:
QMessageBox.warning(self, "错误", '链接不能为空')
else:
self.start_button.setText('开始')
try:
self.s_t.is_on = False
except:
pass
def receive_result(self, log_text):
# 输入日志
self.log_browser.append(log_text)
# 自动下拉
self.log_browser.moveCursor(self.log_browser.textCursor().End)
PyQt 线程
class LinkThread(QThread):
# 创建信号
_signal = pyqtSignal(list)
def __init__(self, link):
self.link = link
self.is_on = True
super(LinkThread, self).__init__()
def run(self):
try:
self._signal.emit(['Exception', '直播已结束'])
except Exception as e:
self._signal.emit(['Exception', e])
注: 任务选择使用pyqt的线程 数据由pyqtSignal信号传输,不会导致页面的卡顿, 还可以控制is_on 实现线程的停止