1 简介
博主介绍:✌全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、编程领域优质创作者,博客之星、各平台优质作者、专注于Java,python等技术领域和毕业项目实战✌
🍅文末获取源码联系🍅
计算机课程设计之基于pyqt的服务端客户端通信。
实现一个简易的传感器数据采集系统
2 设计概要
pyqt 不同窗口怎么相互通讯?
在 PyQt 中,不同窗口之间可以使用信号(signal)和槽(slot)的机制进行通信。具体来说,一个窗口可以发出一个信号,另一个窗口可以连接这个信号,并在收到信号时执行对应的槽函数。
以下是一个简单的示例代码,演示了如何在两个窗口之间传递文本数据:
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QVBoxLayout, QWidget, QLineEdit
from PyQt5.QtCore import pyqtSignal, QObject
class Window1(QMainWindow):
text_changed = pyqtSignal(str)
def __init__(self):
super().__init__()
self.setWindowTitle('Window 1')
self.line_edit = QLineEdit()
self.line_edit.textChanged.connect(self.on_text_changed)
self.setCentralWidget(self.line_edit)
def on_text_changed(self, text):
self.text_changed.emit(text)
class Window2(QMainWindow):
def init(self):
super().init()
self.setWindowTitle(‘Window 2’)
self.label = QLabel()
layout = QVBoxLayout()
layout.addWidget(self.label)
widget = QWidget()
widget.setLayout(layout)
self.setCentralWidget(widget)
def on_text_changed(self, text):
self.label.setText(text)
class Communicate(QObject):
text_changed = pyqtSignal(str)
def main():
app = QApplication([])
window1 = Window1()
window2 = Window2()
communicate = Communicate()
communicate.text_changed.connect(window2.on_text_changed)
window1.text_changed.connect(communicate.text_changed)
window1.show()
window2.show()
app.exec_()
if name == ‘main’:
main()
在这个示例中,我们创建了两个窗口 Window1 和 Window2,以及一个通信类 Communicate。Window1 中有一个文本框,当文本框中的文本发生变化时,就会发出 text_changed 信号。Communicate 类中有一个同名的信号,用于将 Window1 的信号连接到 Window2 的槽函数 on_text_changed 中。当 Window2 接收到 text_changed 信号时,就会调用 on_text_changed 方法,将文本设置为标签的文本。
在 main 函数中,我们创建了 Window1、Window2 和 Communicate 的实例,并将它们连接起来。最后,我们显示这两个窗口,启动 PyQt 的事件循环。
这样,当在 Window1 的文本框中输入文本时,Window2 的标签就会立即更新为相同的文本。
本系统的功能主要包括本系统的功能主要包括:
(1) 数据采集客户端。能够随机产生等模拟数据(如:温度、湿度),并发送到服务器端。
(2) 数据采集服务器,接收多个客户端的数据并进行展示。
(3) 通讯协议设计,包括:心跳协议、数据上报、客户端上线、下线等。
3 系统关键技术
使用springboot,vue,mysql, mybaties, typescript, html ,css, js 等进行开发
4 开发工具
开发工具主要有:idea、jdk1.8、maven、mysql5.7、Navicat等。
5 代码展示
@RequestMapping("/strategy")
@RestController
@Scope("prototype")
public class StrategyController {
@Autowired
private StrategyService strategyService;
@Value("${web.upload-path}")
private String path;
@RequestMapping("/findPage")
public ObjDat<Strategy> findPage(Strategy strategy, @RequestParam(value="page", defaultValue="1") int page, @RequestParam(value="limit", defaultValue="10") int limit){
return strategyService.findPage(strategy,page-1,limit);
}
@RequestMapping("/edit")
public JsonResult edit(HttpServletRequest request, Strategy strategy) throws IOException {
User user=(User)request.getSession().getAttribute("user");
if(user==null){
return JsonResult.error("请登录");
}
String str=strategyService.edit(request,strategy);
if(str.equals("成功")){
return JsonResult.success("操作成功");
}else{
return JsonResult.error("操作失败");
}
}
6 系统功能描述
项目功能演示
7 最后
大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻