我正在使用PyQt的qgis插件。我想有一些表/列表视图,第一列是来自打开的shapefile的图层,然后第二列是将从数据库输入中加载值的组合框。这是可能的,如果是这样,我需要使用listview,tableview或treeview?提前致谢!!是否有一个PyQt表/列表视图可以在一列中用组合框动态填充?
1
A
回答
1
如果我正确理解你,我已经做了一些非常相似的事情。
在我的情况下,我想用QDoubleSpinBoxes填充以下QTableWidget并为它们中的每一个设置特定的属性。
所以我在QDesigner做了一个 “模式” 空QTableWidget的,在我的代码,我使用了以下功能:
填充QTableWidget的
def QTableWidget_populate(self, table):
# Create an empty matrix with the same dimensions as your table
self.ele_mat = [
[0 for x in range(table.columnCount())] for x in range(table.rowCount())]
# For each cell in the table define its characteristics
for row in xrange(table.rowCount()):
for column in xrange(table.columnCount()):
# Define row name prefix
if row == 0:
element = 'Begin_'
elif row == 1:
element = 'MidMinus_'
elif row == 2:
element = 'MidPlus_'
elif row == 3:
element = 'End_'
# Define columns paraters
if column == 0:
element += 'Pow' # Name column sufix
param1 = '2' # setDecimals settings
param2 = '-99,99' # setRange
param3 = '"dBm"' # seSuffix
elif column == 1:
element += 'PD'
param1 = '0'
param2 = '0,999'
param3 = '"uA"'
elif column == 2:
element += 'TMVoltage'
param1 = '2'
param2 = '-99,99'
param3 = '"V"'
elif column == 3:
element += 'Wav'
param1 = '1'
param2 = '0,2000'
param3 = '"nm"'
# Popule matrix with dict of parameters
self.ele_mat[row][column] = {
'name': element, 'type': 'QtGui.QDoubleSpinBox()',
'Adjustments': ['setDecimals', 'setRange', 'setSuffix'],
'Params': [param1, param2, param3]}
# Using the matrix populate the QTableWidget
for row in xrange(table.rowCount()):
for column in xrange(table.columnCount()):
# Create Widget with name and type defined in the matrix
exec('self.{} = {}' .format(
self.ele_mat[row][column]['name'],
self.ele_mat[row][column]['type']))
# Give it its settings
for adjustment, param in zip(self.ele_mat[row][column]['Adjustments'],
self.ele_mat[row][column]['Params']):
exec('self.{}.{}({})' .format(self.ele_mat[
row][column]['name'], adjustment, param))
# Set the created widget to the QTableWidget
table.setCellWidget(row, column, eval(
'self.{}' .format(self.ele_mat[row][column]['name'])))
# For better clarity in GUI
table.horizontalHeader().setResizeMode(QtGui.QHeaderView.Stretch)
table.verticalHeader().setResizeMode(QtGui.QHeaderView.Stretch)
我完全不知道怎么样是您正在阅读的文件的格式,但我相信您可以根据文件中的条目在我的函数中添加一个for
循环,将setValue添加到QDoubleSpinBox。此外,您还可以使用setVerticalHeaderLabels
和setHorizontalHeaderLabels
方法通过代码设置标题标签。
即使我使用pyqt,我通常会使用pyside的文档,因为它们大部分时间都是平等的,而pyside的读取和浏览更容易。 QTableWidget Docs
希望它有帮助。
相关问题
- 1. 从组合框填充列表视图
- 2. 在列表视图中填充组合框列表
- 3. 动态填充列表框
- 4. 在PYQT中填充图像列表
- 5. 填充列表视图与一个ArrayList
- 6. 动态填充列表视图的Android
- 7. 动态填充列表视图
- 8. 是否可以创建一个视图,从列表中选取列的列表?
- 9. 从列表中的列表填充组合框
- 10. 从另一个列表框选择填充列表框
- 11. 当我选择另一个列表框时填充列表框
- 12. MVC 4列表框填充另一个列表框
- 13. 是否有可能在另一个嵌套列表视图?
- 14. 是否可以从数据库填充列表对话框?
- 15. 填充视图模型列表中的复选框列表
- 16. 是否有可能在C++中有一个动态填充char *数组?
- 17. 用可用字体列表填充组合框,Java
- 18. 填充列表视图与另一个活动的结果
- 19. 是否可以从Excel工作表中填充SharePoint列表?
- 20. 填充列表视图
- 21. 填充列表视图
- 22. 动态填充UnOrdered列表
- 23. 动态填充列表(jQuery)
- 24. 从另一个存储过程在列表视图中填充下拉列表
- 25. Python - 用零填充和填充列表以匹配另一个列表
- 26. 多行列表视图填充数组?
- 27. 使用另一个工作表中的动态值填充组合框
- 28. 填充动态组合框
- 29. 填充组合框动态
- 30. 在python中填充一个列表
非常有帮助!谢谢! – InsertDisplayName
@InsertDisplayName ...那么你可以接受答案,不是吗? –