Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 使用PyQt5“销毁具有多个参数的函数的返回值”;更新的「;_Python 3.x_Dictionary_Pyqt5_Qtablewidget_Qtablewidgetitem - Fatal编程技术网

Python 3.x 使用PyQt5“销毁具有多个参数的函数的返回值”;更新的「;

Python 3.x 使用PyQt5“销毁具有多个参数的函数的返回值”;更新的「;,python-3.x,dictionary,pyqt5,qtablewidget,qtablewidgetitem,Python 3.x,Dictionary,Pyqt5,Qtablewidget,Qtablewidgetitem,这是S.N提出的代码,感谢他,使用函数编程。 它有一个严重的问题。如果它给runItem tuple一些元素,例如(“222”,15),而这个元素在数据字典中不存在,那么它将引用这个方法getbrutActifData()return之前的值。事实上,我希望它是一个“0”。通常,我的程序的runItem是一个静态资产,它包含假定在常规数据中的所有键。但字典将根据数据而改变。这是代码,如果您有任何建议,谢谢。 我将代码更新为在单元格(n,-1)中插入带有“0”的项_b_1(如果dict中不存在)

这是S.N提出的代码,感谢他,使用函数编程。 它有一个严重的问题。如果它给runItem tuple一些元素,例如(“222”,15),而这个元素在数据字典中不存在,那么它将引用这个方法getbrutActifData()return之前的值。事实上,我希望它是一个“0”。通常,我的程序的runItem是一个静态资产,它包含假定在常规数据中的所有键。但字典将根据数据而改变。这是代码,如果您有任何建议,谢谢。 我将代码更新为在单元格(n,-1)中插入带有“0”的项_b_1(如果dict中不存在)

import sys
from PyQt5.QtCore    import *
from PyQt5.QtGui     import *
from PyQt5.QtWidgets import *

data = {'2111' :['Capital 1','1','1', '', '', '',  '1', '', '', '1','', '',  ''], 
        '23411':['Capital 2','2', '', '2','2','21','21','', '', '2','2','23','24'], 
        '23421':['Capital 3','3', '', '3','', '31','32','', '3','', '3','33','34'], 
        '3421' :['Capital 4','4', '', '4','4','41','42','', '4','4','4','43','44'], 
        '3422' :['Capital 5','5', '', '5','5','51','52','5','', '', '5','53','54'], 
        '3451' :['Capital 6','6', '', '', '6','61','62','6','', '', '6','63','64'], 
        '2230' :['Capital 7','7', '7','', '7','7', '7', '7','7','', '7','7', ''], 
        '3452' :['Capital 8','8', '', '', '8','81','82','', '8','8','8','83','84']}

class Table(QWidget):
    def __init__(self, *args, parent=None):
        super().__init__()

    self.data = data
    self.item_n, self.item_b_1, self.item_b_2 = 0, 0, 0
    self.r = BlData(self.data, self.item_n, self.item_b_1, self.item_b_2)

    self.setuptUI()

def setuptUI(self):
    self.tableWidget_Bl = QTableWidget(55, 14, self)

    conLayout = QHBoxLayout()
    conLayout.addWidget(self.tableWidget_Bl)
    self.setLayout(conLayout)

    self.updateItems()

def updateItems(self):
    m = 5
    runItem = (("234", 10), ("222", 15), ("235", 15), ("342", 17), ("345", 19))          
    for k, n in runItem:                                      
        self.r.updateActifData( k, n )
        self.tableWidget_Bl.setItem(int(self.r.getrow()), m, QTableWidgetItem(str(self.r.getnData())))
        self.tableWidget_Bl.setItem(int(self.r.getrow()), m-1, QTableWidgetItem(str(self.r.getitem_1Data())))



class BalanceData():
    data = {}
    def __init__(self, data):
        self.data = data

class BlData(BalanceData):
    def __init__ (self, data, item_n, item_b_1, item_b_2):
        BalanceData.__init__(self, data)
def updateActifData(self, k, n):
    #the sum for one key 
    self.n = n
    self.item_n, self.item_b_1, self.item_b_2, item_1, item_2 = 0, 0, 0, 0, 0                # +++
    item_3, item_4 = 0, 0                        
    v = 5
    for kd, vd in self.data.items():
        if kd[:len(k)] == k:
            s_1 = vd[v] 
            print("\n1 {:<10} -> {:10.2f}".format(kd, float(s_1) if s_1 else 0))
            item_1 = item_1 + (float(s_1) if s_1 else 0)
            #print(item)    
            s_2 = vd[v+1]  # the next range
            print("2 {:<10} -> {:10.2f}".format(kd, float(s_2) if s_2 else 0))
            item_2 = item_2 + (float(s_2) if s_2 else 0)

            item_b_1 = item_1 + item_2 

     for kd, vd in self.data.items():
         if kd[:len(k)] == k:
            s_1 = vd[v+6] 
            print("3 {:<10} -> {:10.2f}".format(kd, float(s_1) if s_1 else 0))
            item_3 = item_3 + (float(s_1) if s_1 else 0)
            #print(item)    
            s_2 = vd[v+7]  # the next range
            print("4 {:<10} -> {:10.2f}".format(kd, float(s_2) if s_2 else 0))
            item_4 = item_4 + (float(s_2) if s_2 else 0)

            item_b_2 = item_3 + item_4

    self.item_n = item_b_1 - item_b_2

    print("item_n= `{}`, item_b_1= `{}`, item_b_2= `{}`"
          "".format(self.item_n, self.item_b_1, self.item_b_2))

def getrow (self):
    print ("getrow:", self.n)
    return self.n

def getnData (self):
    return self.item_n

def getitem_1Data():
    return self.item_b_1

if __name__ == '__main__':
    app = QApplication(sys.argv)
    windows = Table()
    windows.setWindowTitle("QTableWidgetItem")
    windows.resize(1200, 800)
    windows.show()
    sys.exit(app.exec_())
导入系统 从PyQt5.QtCore导入* 从PyQt5.QtGui导入* 从PyQt5.QtWidgets导入* 数据={'2111':['Capital 1','1','','',''1','','','1','','','','', '23411':[大写字母2','2','2','2','21','21','21','2','2','2','23','24'], '23421':['大写字母3','3','3','31','32','3','3','33','34'], ‘3421’:[‘大写字母4’、‘4’、‘4’、‘4’、‘41’、‘42’、‘4’、‘4’、‘4’、‘43’、‘44’], '3422':[大写字母5','5','5','5','51','52','5','53','54'], '3451':[大写字母6','6','61','62','6','6','63','64'], ‘2230’:[‘大写字母7’、‘7’、‘7’、‘7’、‘7’、‘7’、‘7’、‘7’、‘7’、‘7’、’, '3452':[大写字母8','8','81','82','8','8','8','8','83','84'] 类表(QWidget): 定义初始化(self,*args,parent=None): super()。\uuuu init\uuuuu() self.data=数据 self.item_n,self.item_b_1,self.item_b_2=0,0,0 self.r=BlData(self.data、self.item、self.item、self.item、self.item) self.setuptUI() def设置TUI(自身): self.tableWidget_Bl=QTableWidget(55,14,self) conLayout=QHBoxLayout() conLayout.addWidget(self.tableWidget_Bl) self.setLayout(conLayout) self.updateItems() def更新项(自身): m=5 runItem=(((“234”,10),(“222”,15),(“235”,15),(“342”,17),(“345”,19)) 对于runItem中的k,n: self.r.updateActifData(k,n) self.tableWidget_Bl.setItem(int(self.r.getrow())、m、QTableWidgetItem(str(self.r.getnda())) self.tableWidget_Bl.setItem(int(self.r.getrow())、m-1、QTableWidgetItem(str(self.r.getitem_1Data())) 类BalanceData(): 数据={} 定义初始化(自身,数据): self.data=数据 BlData类(余额数据): 定义初始化(自身、数据、项n、项b_1、项b_2): BalanceData.\uuuuu init\uuuuuuuu(自,数据) def updateActifData(自身、k、n): #一把钥匙的总数 self.n=n self.item_n,self.item_b_1,self.item_b_2,item_1,item_2=0,0,0,0#+++ 第3项,第4项=0,0 v=5 对于self.data.items()中的kd、vd: 如果kd[:len(k)]==k: s_1=vd[v] 打印(“\n1{:{:10.2f}”。格式(kd,浮点(s_1,如果s_1,则为0)) 项目_1=项目_1+(如果s_1为0,则浮动(s_1)) #打印(项目) s_2=vd[v+1]#下一个范围 打印(“2{:{:10.2f}”。格式(kd,浮点(s_2,如果s_2,则为0)) item_2=item_2+(如果s_2为0,则浮动(s_2)) 第1项=第1项+第2项 对于self.data.items()中的kd、vd: 如果kd[:len(k)]==k: s_1=vd[v+6] 打印(“3{:{:10.2f}”。格式(kd,浮点(s_1,如果s_1,则为0)) 项目_3=项目_3+(如果s_1为0,则浮动(s_1)) #打印(项目) s_2=vd[v+7]#下一个范围 打印(“4{:{:10.2f}”。格式(kd,浮点(s_2,如果s_2,则为0)) 项目_4=项目_4+(如果s_2为0,则浮动(s_2)) 第2项=第3项+第4项 self.item_n=item_b_1-item_b_2 打印(“项目n=`{}`,项目b\u 1=`{}`,项目b\u 2=`{}`” “”格式(self.item\u n、self.item\u b\u 1、self.item\u b\u 2)) def getrow(自身): 打印(“getrow:,self.n) 返回自我 def getnData(自我): 返回self.item\n def getitem_1Data(): 返回self.item_b_1 如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu': app=QApplication(sys.argv) windows=表() setWindowTitle(“QTableWidgetItem”) 调整窗口大小(1200800) windows.show() sys.exit(app.exec_()) 试试看:

import sys
from PyQt5.QtCore    import *
from PyQt5.QtGui     import *
from PyQt5.QtWidgets import *

data = {'2111' :['Capital 1','1','1', '', '', '',  '1', '', '', '1','', '',  ''], 
        '23411':['Capital 2','2', '', '2','2','21','21','', '', '2','2','23','24'], 
        '23421':['Capital 3','3', '', '3','', '31','32','', '3','', '3','33','34'], 
        '3421' :['Capital 4','4', '', '4','4','41','42','', '4','4','4','43','44'], 
        '3422' :['Capital 5','5', '', '5','5','51','52','5','', '', '5','53','54'], 
        '3451' :['Capital 6','6', '', '', '6','61','62','6','', '', '6','63','64'], 
        '2230' :['Capital 7','7', '7','', '7','7', '7', '7','7','', '7','7', ''], 
        '3452' :['Capital 8','8', '', '', '8','81','82','', '8','8','8','83','84']}

class Table(QWidget):
    def __init__(self, data):   #*args, parent=None):
        super().__init__()

        self.data = data
        self.item_n, self.item_b_1, self.item_b_2 = 0, 0, 0
        self.r = BlData(self.data, self.item_n, self.item_b_1, self.item_b_2)

        self.setuptUI()

    def setuptUI(self):
        self.tableWidget_Bl = QTableWidget(55, 14, self)

        conLayout = QHBoxLayout()
        conLayout.addWidget(self.tableWidget_Bl)
        self.setLayout(conLayout)

        self.updateItems()

    def updateItems(self):
        m = 5

        runItem = (("234", 10), ("222", 15), ("235", 16), ("342", 17), ("345", 19)) 

        for k, n in runItem:                                      
            self.r.updateActifData( k, n )
            self.tableWidget_Bl.setItem(int(self.r.getrow()), m, QTableWidgetItem(str(self.r.getnData())))



class BalanceData():
    data = {}
    def __init__(self, data):
        self.data = data

class BlData(BalanceData):
    def __init__ (self, data, item_n, item_b_1, item_b_2):
        BalanceData.__init__(self, data)

    def updateActifData(self, k, n):
        #the sum for one key 
        self.n = n
        item_n, item_b_1, item_b_2, item_1, item_2 = 0, 0, 0, 0, 0
        item_3, item_4 = 0, 0                        
        v = 5
        for kd, vd in self.data.items():
            if kd[:len(k)] == k:
                s_1 = vd[v] 
                print("\n1 {:<10} -> {:10.2f}".format(kd, float(s_1) if s_1 else 0))
                item_1 = item_1 + (float(s_1) if s_1 else 0)
                #print(item)    
                s_2 = vd[v+1]  # the next range
                print("2 {:<10} -> {:10.2f}".format(kd, float(s_2) if s_2 else 0))
                item_2 = item_2 + (float(s_2) if s_2 else 0)

#                self.item_b_1 = item_1 + item_2 
                item_b_1 = item_1 + item_2                              # +++

#        for kd, vd in self.data.items():
#            if kd[:len(k)] == k:
                s_1 = vd[v+6] 
                print("3 {:<10} -> {:10.2f}".format(kd, float(s_1) if s_1 else 0))
                item_3 = item_3 + (float(s_1) if s_1 else 0)
                #print(item)    
                s_2 = vd[v+7]  # the next range
                print("4 {:<10} -> {:10.2f}".format(kd, float(s_2) if s_2 else 0))
                item_4 = item_4 + (float(s_2) if s_2 else 0)

#                self.item_b_2 = item_3 + item_4
                item_b_2 = item_3 + item_4                                    # +++

#        self.item_n = self.item_b_1 - self.item_b_2
        self.item_n = item_b_1 - item_b_2                                     # +++

        print("item_n= `{}`, item_b_1= `{}`, item_b_2= `{}`"
              "".format(self.item_n, item_b_1, item_b_2))                     # +++
#              "".format(self.item_n, self.item_b_1, self.item_b_2))

    def getrow (self):
        print ("getrow:", self.n)
        return self.n

    def getnData (self):
        return self.item_n


if __name__ == '__main__':
    app = QApplication(sys.argv)
    windows = Table(data)                             # data
    windows.setWindowTitle("QTableWidgetItem")
    windows.resize(1200, 800)
    windows.show()
    sys.exit(app.exec_())
导入系统 从PyQt5.QtCore导入* 从PyQt5.QtGui导入* 从PyQt5.QtWidgets导入* 数据={'2111':['Capital 1','1','','',''1','','','1','','','','', '23411':[大写字母2','2','2','2','21','21','21','2','2','2','23','24'], '23421':['大写字母3','3','3','31','32','3','3','33','34'], ‘3421’:[‘大写字母4’、‘4’、‘4’、‘4’、‘41’、‘42’、‘4’、‘4’、‘4’、‘43’、‘44’], '3422':[大写字母5','5','5','5','51','52','5','53','54'], '3451':[大写字母6','6','61','62','6','6','63','64'], ‘2230’:[‘大写字母7’、‘7’、‘7’、‘7’、‘7’、‘7’、‘7’、‘7’、‘7’、‘7’、’, '3452':[大写字母8','8','81','82','8','8','8','8','83','84'] 类表(QWidget): def _uinit(self,data):#*args,parent=None): super()。\uuuu init\uuuuu() self.data=数据 self.item_n,self.item_b_1,self.item_b_2=0,0,0 self.r=BlData(self.data、self.item、self.item、self.item、self.item) self.setuptUI() def设置TUI(自身): self.tableWidget_Bl=QTableWidget(55,14,self) conLayout=QHBoxLayout() conLayout.addWidget(self.tableWidget_Bl) self.setLayout(conLayout) self.updateItems() def更新项(自身): m=5 runItem=(((“234”,10),(“222”,15),(“235”,16),(“342”,17),(“345”,19)) 对于runItem中的k,n: self.r.updateActifData(k,n) self.tableWidget_Bl.setItem(int(self.r.getrow())、m、QTableWidgetItem(str(se