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