久久久久久久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超碰 | 国产视频黄色 | 91成人免费| 精品国产91 | 人人九九| 黄色三级免费网站 | 欧美一级精品片在线看 | 99亚洲视频 | 国产一区二区视频免费在线观看 | 日韩精品一区二区三区四区 | 欧美日韩一区在线观看 | 欧美综合一区二区三区 | 国产在线视频一区二区 | av成人在线观看 | 国产一区二区三区久久久久久久久 | 国产精选一区 | 成人午夜高清 | 日韩有码在线观看 | 亚洲美女天堂网 | av一区二区在线观看 | 九九九视频精品 | 天天爱爱网| 国产日屁 | 欧美一区二区三区视频在线 | 视频一区二区在线观看 | 欧美成人综合 | 午夜在线精品 | 日韩中文在线观看 | 91精品国产综合久久婷婷香蕉 | 91精品国产一区二区三区动漫 | 东方伊人免费在线观看 | 久久tv在线观看 | 91精品国产一区二区三区 | 日本在线中文 | 欧美激情精品久久久久久免费 | 伊人无码高清 | 亚洲精品久久久久中文字幕欢迎你 | 男人的天堂中文字幕 | 国产免费又色又爽又黄在线观看 | 国产亚洲精品久久久优势 | 国产精品高清在线 |