pyqt 模仿暴雪聊天框

2016-11-28 20:04:32 +08:00
 NxnXgpuPSfsIT

最近写了一个通过 pyqt 模仿暴雪界面的项目,旨在给予学习 pyqt 的同行一些借鉴。

这里是项目地址:github

配色、样式、配图皆来源于暴雪,但具体的项目实现存在一些个人的取巧。

希望这个项目可以帮助你更快的完成界面的搭建或者入门 pyqt 。

由于 QtWebKit 的变化,目前 pyqt5.6 及以上的版本不能被支持。

目前该项目仅完成了聊天窗口的部分,其余部分将陆续更新。

简单入门实例

在将本项目下载到本地后,你可以这样运行:

python demo.py

运行后,你将看到这样的界面:

方法说明

下面我们就演示程序对如何使用做一个简单的讲解:

#coding=utf8
import sys

from blizzardui.pyqt.QtGui import (
    QApplication, QPixmap)

from blizzardui.widgets import Chatroom

# 常规的启动动作就不多加说明
app = QApplication(sys.argv)
# 两个 NickName 定义了来往的用户昵称
# headImage 应当为一个 46*46 的 QPixmap ,当然如果过大也会被自动截取
mainWindow = Chatroom(toNickName=u'好友 A', fromNickName='LittleCoder',
    headImage=QPixmap('src/chatroom/images/header/default_image.png'))
mainWindow.show()

# 当你输入一些内容并使用 Enter 时,将会调用该方法
def fn(msg):
    mainWindow.add_msg(msg)
    print(unicode(msg))
mainWindow.messageReceived.connect(fn)

# 通过 add_msg ,可以向历史记录中加入消息
# 如果 isSend 设为 False ,将会判定为是收到的消息
mainWindow.add_msg('yo' * 50)
mainWindow.add_msg('yo', isSend=False)
mainWindow.add_msg('yo')
# 通过 set_footer ,可以设置页尾的内容
mainWindow.set_footer(u'最后登录')

sys.exit(app.exec_())

关于

Q: 为什么不使用 QWebEngineView ?

A: 我没能找到一个很好的办法让 QWebEngineView 快速启动,所以会出现初始化时闪烁以及无法加入消息的问题。

如果有什么问题或者建议都可以在这个Issue和我讨论

4365 次点击
所在节点    Python
7 条回复
edsgerlin
2016-11-28 20:09:07 +08:00
WebEngineView 可以先不 show 出来,等接到 load 完了的 signal 再 show 。
Tianqi
2016-11-28 20:13:22 +08:00
沒記錯的話,戰網客戶端就是用 Qt 開發的
NxnXgpuPSfsIT
2016-11-28 20:16:30 +08:00
@Tianqi 是的
NxnXgpuPSfsIT
2016-11-28 20:17:11 +08:00
@edsgerlin 主要是主界面不 show , WebEngineView 不载入 html ,有什么解决方案吗?
edsgerlin
2016-11-28 20:34:28 +08:00
@NxnXgpuPSfsIT WebEngine 不显式初始化的话,会依赖所属的 widget 来初始化。你试试先 QtWebEngine::initialize();
NxnXgpuPSfsIT
2016-11-29 09:12:31 +08:00
@edsgerlin 多谢,我这里直接用的是 QtWebEngineWidgets 里面的 QtWebEngineView ,我看看有没有类似的解决方案。
patrickstar
2016-11-29 12:51:33 +08:00
可惜我安装的是 pyqt 5.7 了,学习一下子

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/323934

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX