2016-09-23 4 views
0

Я посетил тонны страниц в Интернете, но у меня есть только примеры в C, и я не понимаю, как это сделать в python. Кто-нибудь может мне помочь. Я использую Pyqt designer и Python 2.7. Мне нужны данные о графике с датами в графическом интерфейсе с использованием qwtplot.Как установить даты на оси x qwtplot в python?

ответ

1

вам нужен класс QwtScaleDraw т.д .:

class TimeScaleDraw(QwtScaleDraw): 
    def __init__(self, baseTime, *args): 
     QwtScaleDraw.__init__(self, *args) 
     self.baseTime = baseTime 

    def label(self, value): 
     upTime = self.baseTime.addSecs(int(value)) 
     return QwtText(upTime.toString()) 

, то вы измените ось х с этим кодом:

self.setAxisScaleDraw(
     QwtPlot.xBottom, TimeScaleDraw(self.cpuStat.upTime())) 

где базовый класс Селф является QwtPlot. cpuStat.upTime() возвращает экземпляр QTime. значение представляет собой одну из ваших временных точек данных. Этот код из кода примера cpuDemo.

Чтобы получить этот пример cpuDemo, работающий с python xy 2.7. внесите эти изменения в импортированные модули:

import os 
import sys 
import numpy as np 

from PyQt4.QtGui import (QApplication, QColor, QBrush, QWidget, QVBoxLayout, 
         QLabel) 
from PyQt4.QtCore import QRect, QTime 
from PyQt4.QtCore import Qt 
from PyQt4.Qwt5 import (QwtPlot, QwtPlotMarker, QwtScaleDraw, QwtLegend, QwtPlotCurve, 
      QwtPlotItem, QwtText)#, QwtLegendData 

затем закомментируйте все линии легенд.

Я использовал этот код для использования класса QDateTime. Вот отрывок:

from PyQt4 import QtCore, QtGui, Qt 
from PyQt4 import Qwt5 

class TimeScaleDraw(Qwt5.QwtScaleDraw): 
    def __init__(self, *args): 
     Qwt5.QwtScaleDraw.__init__(self,unixBaseTime *args) 
     self.basetime=unixBaseTime 
     self.fmt='h:mm\nd-MMM-yyyy' 

    def label(self, value): 
     dt = QtCore.QDateTime.fromMSecsSinceEpoch((value+self.basetime)) 
     return Qwt5.QwtText(dt.toString(self.fmt)) 

... 

class Ui_TabWidget(object): 
    def setupUi(self, TabWidget): 
     self.qwtPlot = Qwt5.QwtPlot() 
     self.qwtPlot.setAxisScaleDraw(Qwt5.QwtPlot.xBottom, TimeScaleDraw(unixBaseTime)) 

восхищается красивая картинка

Смежные вопросы