Dup Ver Goto 📝

BarChartWidget_01

To
49 lines, 118 words, 1309 chars Page 'BarChartWidget_01' does not exist.
from icecream import ic; ic.configureOutput(includeContext=True)
import PySide6.QtCore
import PySide6.QtGui
import PySide6.QtWidgets
import PySide6.QtNetwork
app = PySide6.QtWidgets.QApplication()

import random

class BarChartWidget(PySide6.QtWidgets.QWidget):
  def __init__(self,*xs,**kw):
    super().__init__(*xs,**kw)
    self.values = [ random.random() for x in range(8) ]
    self.color = PySide6.QtGui.QColor("red")
  def __setitem__(self,idx,val):
    val = min(1.0,max(0.0,float(val)))
    idx = int(idx) % 8
    self.values[idx] = val
    self.update()
  def __getitem__(self,idx):
    idx = int(idx) % 8
    return self.values[idx]
  def keyPressEvent(self,e):
    print("key")
    for i in range(8):
      x = random.random()
      self[i] = x
  def paintEvent(self,e):
    with PySide6.QtGui.QPainter(self) as p:
      rect = self.rect()
      width = rect.width()
      height = self.height()
      nvalues = len(self.values)
      colwidth = width / nvalues
      p.fillRect(rect,PySide6.QtCore.Qt.black)
      for i,val in enumerate(self.values):
        x = i*colwidth
        print(i,x,val)
        p.fillRect(x,height*val,colwidth,height - height*val,self.color)


if __name__ == "__main__":
  w = BarChartWidget()
  w.show()
  app.exec()