Cain50 2023-08-18 02:49 采纳率: 40%
浏览 2

pyqtgraph学习中对于表格位置的设置问题

请问代码中的graph_widget哪个功能函数能设置它位于ui界面的位置呢?


import sys
import serial
import threading
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtCore import Qt, QTimer
from PyQt5.QtGui import QFont
import pyqtgraph as pg


class SerialPlotter(QMainWindow):
    def __init__(self):
        super().__init__()

        self.serial_port = None
        self.serial_thread = None
        self.data_x = []
        self.data_y = []

        self.init_ui()
        self.connect_serial()

    def init_ui(self):
        self.setWindowTitle("Serial Plotter")
        self.setGeometry(100, 100, 800, 600)

        self.graph_widget = pg.PlotWidget(title="高度检测")
        # self.graph_widget.setXRange(-10, 10)    # x的范围
        # self.graph_widget.setYRange(-10, 10)    # y的范围
        # 表格大小
        self.graph_widget.setFixedHeight(400)
        self.graph_widget.setFixedWidth(400)
        self.graph_widget.setBackground("w")
        self.graph_widget.addLegend()
        self.graph_widget.showGrid(x=True, y=True, alpha=0.5)
        self.graph_widget.setLabel("left", "高度")
        self.graph_widget.setLabel("bottom", "时间")

        self.plot_data = self.graph_widget.plot(self.data_x, self.data_y, pen=pg.mkPen("b", width=2), name="Data")

        self.setCentralWidget(self.graph_widget)


    def connect_serial(self):
        try:
            self.serial_port = serial.Serial("COM5", baudrate=9600)  # 设置串口号和波特率
            self.serial_thread = threading.Thread(target=self.receive_data)
            self.serial_thread.start()
        except serial.SerialException as e:
            print("Failed to connect to serial port:", str(e))

    def receive_data(self):
        while self.serial_port.is_open:
            if self.serial_port.in_waiting:
                # 从串口读取数据
                data = self.serial_port.readline().decode("utf-8").strip()
                self.update_plot(float(data))

    def update_plot(self, data):
        self.data_x.append(len(self.data_x))
        self.data_y.append(data)

        self.plot_data.setData(self.data_x, self.data_y)

    def closeEvent(self, event):
        if self.serial_port:
            self.serial_port.close()
        if self.serial_thread and self.serial_thread.is_alive():
            self.serial_thread.join()
        event.accept()


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = SerialPlotter()
    window.show()
    sys.exit(app.exec_())
  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-08-18 04:01
    关注

    【以下回答由 GPT 生成】

    问题中提到的代码中缺少相关信息无法给出具体解决方案,但是在PyQtGraph中可以使用setGeometry()函数来设置组件在UI界面中的位置。以下是一个示例代码:

    import pyqtgraph as pg
    from PyQt5.QtWidgets import QMainWindow, QWidget, QVBoxLayout
    
    class MainWindow(QMainWindow):
        def __init__(self):
            super(MainWindow, self).__init__()
    
            # 创建一个QWidget作为主窗口的中心部件
            central_widget = QWidget(self)
    
            # 创建一个垂直布局
            layout = QVBoxLayout(central_widget)
    
            # 创建一个PlotWidget作为图形组件
            graph_widget = pg.PlotWidget()
    
            # 将图形组件添加到布局中
            layout.addWidget(graph_widget)
    
            # 设置中心部件
            self.setCentralWidget(central_widget)
    
            # 设置图形组件的位置
            graph_widget.setGeometry(100, 100, 400, 300)
    
    if __name__ == '__main__':
        import sys
        from PyQt5.QtWidgets import QApplication
    
        app = QApplication(sys.argv)
        mainWindow = MainWindow()
        mainWindow.show()
        sys.exit(app.exec_())
    

    在上面的示例代码中,使用setGeometry()函数设置了graph_widget在UI界面中的位置和大小。setGeometry()函数的参数依次为x坐标、y坐标、宽度和高度。通过修改这四个参数的值即可改变graph_widget的位置和大小。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 8月18日

悬赏问题

  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计