pos機(jī)卡交互失敗

 新聞資訊2  |   2023-08-05 10:37  |  投稿人:pos機(jī)之家

網(wǎng)上有很多關(guān)于pos機(jī)卡交互失敗,QChart圖表之對(duì)圖表進(jìn)行交互操作的知識(shí),也有很多人為大家解答關(guān)于pos機(jī)卡交互失敗的問題,今天pos機(jī)之家(www.shineka.com)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來看下吧!

本文目錄一覽:

1、pos機(jī)卡交互失敗

pos機(jī)卡交互失敗

圖表交互操作

在圖表可視化中,一些場(chǎng)景中需要對(duì)圖表進(jìn)行交互操作,QChart的各種圖表類繼承自Qt的GraphicsView 框架,因此可以很方便對(duì)圖表中的各種元素進(jìn)行進(jìn)行交互操作,例如,可以使用鼠標(biāo)拖動(dòng)QLineSeries圖形序列中的某個(gè)點(diǎn),改變其值,并在圖表中交互顯示。

使用鼠標(biāo)進(jìn)行交互操作,需要在繼承自QChartView的類中重新實(shí)現(xiàn)三個(gè)和鼠標(biāo)有關(guān)的事件函數(shù),它們是mousePressEvent(), mouseMoveEvent()和MouseReleaseEvent(), 記錄鼠標(biāo)移動(dòng)的點(diǎn),將其傳送給QChart類,然后就其轉(zhuǎn)換成對(duì)應(yīng)圖標(biāo)序列坐標(biāo)的點(diǎn),替換序列中相應(yīng)的點(diǎn)值,就可以實(shí)現(xiàn)交互對(duì)圖表的交互操作。

折線交互操作示例

示例代碼演示了如何使用鼠標(biāo)來交互調(diào)整QLineSeries中的點(diǎn),并在圖表中動(dòng)態(tài)顯示出來。完整代碼如下:

import sys, mathfrom PyQt5.QtCore import Qt, Qpoint, QPointFfrom PyQt5.QtGui import QPainter, QPenfrom PyQt5.QtWidgets import QApplication, QMainwindowfrom  PyQt5.QtChart import QChart, QChartView, QLineSeries, QAbstractAxis, QValueAxis class MyChart(QChart):    def __init__(self, parent=None):        super(MyChart, self).__init__(parent)        self.clicked = False            def clickPoint(self, point):        series = self.series()[0]        if series is None:            return                #找到最近的點(diǎn)        self.movingPoint = QPoint()        self.clicked = False                points = series.pointsVector()        for pnt in points:            if self.distance(pnt, point) < self.distance(self.movingPoint, point):                self.movingPoint = pnt                self.clicked = True       def distance(self, p1, p2):        dx = p1.x() - p2.x()        dy = p1.y() - p2.y()        return  math.sqrt(dx * dx + dy * dy)        def setPointClicked(self, clicked):        self.clicked = clicked            def handlePointMove(self, point):        if not self.clicked:            return        #將從ChartView中單擊的點(diǎn)映射到圖表所占據(jù)的區(qū)域。        mappedPoint = point        mappedPoint.setX(point.x() - self.plotArea().x())        mappedPoint.setY(point.y() - self.plotArea().y())                #獲取x軸和y軸,以便能夠?qū)⒂成涞淖鴺?biāo)點(diǎn)轉(zhuǎn)換為圖表比例。        axisX = self.axes(Qt.Horizontal)[0]        hAxis = None        if axisX.type() == QAbstractAxis.AxisTypeValue:            hAxis = axisX                    axisY = self.axes(Qt.Vertical)[0]        vAxis = None        if axisY.type() == QAbstractAxis.AxisTypeValue:            vAxis = axisY                    if hAxis and vAxis:            #計(jì)算在x軸和y軸上兩點(diǎn)的單位因子            xUnit = self.plotArea().width="360px",height="auto" />

運(yùn)行結(jié)果如下圖:

本文知識(shí)點(diǎn)使用QLineSerie.replace()方法對(duì)其中的點(diǎn)進(jìn)行動(dòng)態(tài)替換。使用鼠標(biāo)對(duì)圖表進(jìn)行交互控制。

請(qǐng)多多關(guān)注,評(píng)論,收藏,點(diǎn)贊,和轉(zhuǎn)發(fā)。

前一篇: 實(shí)戰(zhàn)PyQt5: 159-使用OpenGL加速圖表繪制

以上就是關(guān)于pos機(jī)卡交互失敗,QChart圖表之對(duì)圖表進(jìn)行交互操作的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于pos機(jī)卡交互失敗的知識(shí),希望能夠幫助到大家!

轉(zhuǎn)發(fā)請(qǐng)帶上網(wǎng)址:http://www.shineka.com/newsone/94656.html

你可能會(huì)喜歡:

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 babsan@163.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。