久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

    1. <tfoot id='Y7jC8'></tfoot>

    2. <legend id='Y7jC8'><style id='Y7jC8'><dir id='Y7jC8'><q id='Y7jC8'></q></dir></style></legend>
        <bdo id='Y7jC8'></bdo><ul id='Y7jC8'></ul>

      <small id='Y7jC8'></small><noframes id='Y7jC8'>

      <i id='Y7jC8'><tr id='Y7jC8'><dt id='Y7jC8'><q id='Y7jC8'><span id='Y7jC8'><b id='Y7jC8'><form id='Y7jC8'><ins id='Y7jC8'></ins><ul id='Y7jC8'></ul><sub id='Y7jC8'></sub></form><legend id='Y7jC8'></legend><bdo id='Y7jC8'><pre id='Y7jC8'><center id='Y7jC8'></center></pre></bdo></b><th id='Y7jC8'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='Y7jC8'><tfoot id='Y7jC8'></tfoot><dl id='Y7jC8'><fieldset id='Y7jC8'></fieldset></dl></div>

        QTableWidget - 自動公式驅動的單元格

        QTableWidget- automatic formula driven cell(QTableWidget - 自動公式驅動的單元格)
        • <legend id='dLTay'><style id='dLTay'><dir id='dLTay'><q id='dLTay'></q></dir></style></legend>

            <tbody id='dLTay'></tbody>

          • <small id='dLTay'></small><noframes id='dLTay'>

              <bdo id='dLTay'></bdo><ul id='dLTay'></ul>
            • <tfoot id='dLTay'></tfoot>
                1. <i id='dLTay'><tr id='dLTay'><dt id='dLTay'><q id='dLTay'><span id='dLTay'><b id='dLTay'><form id='dLTay'><ins id='dLTay'></ins><ul id='dLTay'></ul><sub id='dLTay'></sub></form><legend id='dLTay'></legend><bdo id='dLTay'><pre id='dLTay'><center id='dLTay'></center></pre></bdo></b><th id='dLTay'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='dLTay'><tfoot id='dLTay'></tfoot><dl id='dLTay'><fieldset id='dLTay'></fieldset></dl></div>
                2. 本文介紹了QTableWidget - 自動公式驅動的單元格的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                  問題描述

                  是否可以將一個單元格設為公式驅動單元格并自動更新?類似于 Excel.

                  Is it possible to make one cell a formula driven cell and have it update automatically? Similar to Excel.

                  例如,我希望用戶填寫兩個單元格,然后當用戶填寫兩個單元格時,第三個單元格將自動劃分.我希望它不連接到按鈕.

                  For example, I want user to fill out two cells, and then a third cell will automatically divide when user fills both cells. I'd like it to be NOT connected to a button.

                  QTable 截圖

                  TableWidget 的代碼:

                  Code for TableWidget:

                  self.tableWidget = {}
                  for i in range(int(self.numberLine.text())):
                      self.tableWidget[i] = QTableWidget()
                      self.tableWidget[i].setRowCount(5)
                      self.tableWidget[i].setColumnCount(3)
                      self.tableWidget[i].setHorizontalHeaderLabels(['OEM (Case {})'.format(i+1), 'ZVI (Case {})'.format (i+1), 'Improvement % '])
                      self.tableWidget[i].setVerticalHeaderLabels(['Flow (MMSCFD)', 'HP', 'Specific Power (HP/MMSCFD)', 'Discharge Temp (F)', ''])
                      self.tableWidget[i].setFixedSize(QtCore.QSize(480, 180))
                      self.gridLayout_14.addWidget(self.tableWidget[i])
                  

                  推薦答案

                  一個優雅的解決方案是創建一個繼承自 QTableWidget 的自定義類,在其中連接 itemChanged信號,每次單元格更改值時都會發出此信號(返回更改的項目,但僅用于驗證默認列是否已更改).

                  An elegant solution is to create a custom class that inherits from QTableWidget, where you connect the itemChanged signal, this is issued each time the cell changes value (this returns the changed item but will use it only to verify that the default columns are the ones have been changed).

                  除了不存在用戶將不同值放入浮動對象的問題之外,我們還將使用 QDoubleValidator,為此我們創建了一個自定義 QItemDelegate.

                  In addition to not having problems that the user places different values to a floating we will use a QDoubleValidator, for that we create a custom QItemDelegate.

                  class FloatDelegate(QItemDelegate):
                      def __init__(self, _from, _to, _n_decimals, parent=None):
                          QItemDelegate.__init__(self, parent=parent)
                          self._from = _from
                          self._to = _to
                          self._n_decimals = _n_decimals
                  
                      def createEditor(self, parent, option, index):
                          lineEdit = QLineEdit(parent)
                          _n_decimals = 2
                          validator = QDoubleValidator(self._from, self._to, self._n_decimals, lineEdit)
                          lineEdit.setValidator(validator)
                          return lineEdit
                  
                  
                  class CustomTableWidget(QTableWidget):
                      _from = 0
                      _to = 10**5
                      _n_decimals = 2
                      def __init__(self, i,  parent=None):
                          QTableWidget.__init__(self, 5, 3, parent=parent)
                          self.setItemDelegate(FloatDelegate(self._from, self._to, self._n_decimals, self))
                          self.setHorizontalHeaderLabels(['OEM (Case {})'.format(i+1), 'ZVI (Case {})'.format (i+1), 'Improvement % '])
                          self.setVerticalHeaderLabels(['Flow (MMSCFD)', 'HP', 'Specific Power (HP/MMSCFD)', 'Discharge Temp (F)', ''])
                          self.setFixedSize(QSize(480, 180))
                          self.itemChanged.connect(self.onItemChanged)
                  
                      def onItemChanged(self, item):
                          # items (2, 0) = (1, 0) / (0, 0)
                          if item.column() == 0 and (item.row() == 0 or item.row()==1):
                              num = self.item(1, 0)
                              den = self.item(0, 0)
                              if num and den:
                                  resp = float(num.data(Qt.DisplayRole))/float(den.data(Qt.DisplayRole))
                                  rest_string = str(round(resp, self._n_decimals))
                                  it = QTableWidgetItem(rest_string, QTableWidgetItem.Type)
                                  self.setItem(2, 0, it)
                  

                  例子:

                  class Widget(QWidget):
                      def __init__(self, parent=None):
                          QWidget.__init__(self, parent=parent)
                          self.setLayout(QGridLayout())
                          for i in range(2):
                              self.layout().addWidget(CustomTableWidget(i))
                  
                  if __name__ == '__main__':
                      import sys
                      app = QApplication(sys.argv)
                      window = Widget()
                      window.show()
                      sys.exit(app.exec_())
                  

                  在你的情況下:

                  self.tableWidget = {}
                  for i in range(int(self.numberLine.text())):
                      self.tableWidget[i] = CustomTableWidget(i)
                      self.gridLayout_14.addWidget(self.tableWidget[i])
                  

                  我們可以將 QLineEdit 更改為 QDoubleSpinBox,而不是使用驗證器.

                  Another option instead of using validators, we can change the QLineEdit to QDoubleSpinBox.

                  def createEditor(self, parent, option, index):
                      w = QDoubleSpinBox(parent)
                      _n_decimals = 2
                      w.setMinimum(self._from)
                      w.setMaximum(self._to)
                      w.setDecimals(self._n_decimals)
                      return w
                  

                  這篇關于QTableWidget - 自動公式驅動的單元格的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

                  【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

                  相關文檔推薦

                  How to bind a function to an Action from Qt menubar?(如何將函數綁定到 Qt 菜單欄中的操作?)
                  PyQt progress jumps to 100% after it starts(PyQt 啟動后進度躍升至 100%)
                  How to set yaxis tick label in a fixed position so that when i scroll left or right the yaxis tick label should be visible?(如何將 yaxis 刻度標簽設置在固定位置,以便當我向左或向右滾動時,yaxis 刻度標簽應該可見
                  `QImage` constructor has unknown keyword `data`(`QImage` 構造函數有未知關鍵字 `data`)
                  Change x-axis ticks to custom strings(將 x 軸刻度更改為自定義字符串)
                  How to show progress bar while saving file to excel in python?(如何在python中將文件保存為excel時顯示進度條?)
                    <bdo id='lVnDb'></bdo><ul id='lVnDb'></ul>

                        • <tfoot id='lVnDb'></tfoot>

                              <tbody id='lVnDb'></tbody>

                            <small id='lVnDb'></small><noframes id='lVnDb'>

                            <legend id='lVnDb'><style id='lVnDb'><dir id='lVnDb'><q id='lVnDb'></q></dir></style></legend>

                            <i id='lVnDb'><tr id='lVnDb'><dt id='lVnDb'><q id='lVnDb'><span id='lVnDb'><b id='lVnDb'><form id='lVnDb'><ins id='lVnDb'></ins><ul id='lVnDb'></ul><sub id='lVnDb'></sub></form><legend id='lVnDb'></legend><bdo id='lVnDb'><pre id='lVnDb'><center id='lVnDb'></center></pre></bdo></b><th id='lVnDb'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='lVnDb'><tfoot id='lVnDb'></tfoot><dl id='lVnDb'><fieldset id='lVnDb'></fieldset></dl></div>
                          1. 主站蜘蛛池模板: 久久精品一 | 欧美成视频 | 美女久久久久 | 精品乱码一区二区 | 黄色毛片一级 | 精品国产一区久久 | 成人黄色av网站 | 欧美一级在线免费 | 欧美精品一区二区三区在线四季 | 午夜国产一级 | 国产成人一区二区 | 在线小视频 | 精品av天堂毛片久久久借种 | 天天插天天干 | 国产成人免费视频 | 精品国产乱码一区二区三区 | 久久91视频 | 中文字幕在线免费观看 | 美女福利视频网站 | 午夜成人免费视频 | 在线一区视频 | 中文字幕日韩一区 | 中文字幕第一页在线 | 天天干天天爽 | 亚洲国产中文字幕 | 国产三区视频在线观看 | 中文字幕第7页 | 成人免费网站 | 国产 欧美 日韩 一区 | 亚洲欧美精品在线观看 | 亚洲劲爆av | 99色在线| 日本大香伊一区二区三区 | 欧美激情在线观看一区二区三区 | 日本黄色一级视频 | 天堂国产 | 成人免费看片网 | 亚洲午夜视频 | 亚洲欧美久久 | 中文字幕乱码亚洲精品一区 | 4hu最新网址 |