如何在特定单元格 pyqt4 中添加列表

萨希尔耆那教

我有一个场景,我有一个表格,我想在我单击的特定单元格下显示一个列表小部件。我正在单击第一列中的单元格,并且只想单击第一个单元格。(单击单元格在这里实现)。唯一的问题是现在如何在单元格下显示列表。?!?!?!

初始视图

在此处输入图片说明

最终的

在此处输入图片说明 我的表格代码是:-

from untitled import *
from PyQt4 import QtGui # Import the PyQt4 module we'll need
import sys # We need sys so that we can pass argv to QApplication
import os

from PyQt4.QtGui import *
from PyQt4.QtCore import *

from PyQt4 import QtGui, QtCore



class MainWindow(QMainWindow,Ui_MainWindow):
    def __init__(self, parent=None):
        QMainWindow.__init__(self, parent)
        self.setupUi(self)
        self.tableWidget.clicked.connect(self.hello)

    def hello(self,item):
        #print(item.column())
        if item.column()==0 :
            print("success")
            #I want to add this List at this cell of table
            itemN = QtGui.QListWidget()
            #hlayout = QtGui.QHBoxLayout()
            #hlayout.addWidget(itemN)
            #self.setCentralWidget(itemN)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

任何帮助,将不胜感激。谢谢

我的 untitled.py 代码在这里,它在窗口中生成一个表格

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'untitled.ui'
#
# Created by: PyQt4 UI code generator 4.11.4
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName(_fromUtf8("MainWindow"))
        MainWindow.resize(800, 600)
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
        self.gridLayout = QtGui.QGridLayout(self.centralwidget)
        self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
        self.tableWidget = QtGui.QTableWidget(self.centralwidget)
        self.tableWidget.setObjectName(_fromUtf8("tableWidget"))
        self.tableWidget.setColumnCount(4)
        self.tableWidget.setRowCount(13)
        item = QtGui.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(0, item)
        item = QtGui.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(1, item)
        item = QtGui.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(2, item)
        item = QtGui.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(3, item)
        item = QtGui.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(4, item)
        item = QtGui.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(5, item)
        item = QtGui.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(6, item)
        item = QtGui.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(7, item)
        item = QtGui.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(8, item)
        item = QtGui.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(9, item)
        item = QtGui.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(10, item)
        item = QtGui.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(11, item)
        item = QtGui.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(12, item)
        item = QtGui.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(0, item)
        item = QtGui.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(1, item)
        item = QtGui.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(2, item)
        item = QtGui.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(3, item)
        self.gridLayout.addWidget(self.tableWidget, 0, 0, 1, 1)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtGui.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 31))
        self.menubar.setObjectName(_fromUtf8("menubar"))
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtGui.QStatusBar(MainWindow)
        self.statusbar.setObjectName(_fromUtf8("statusbar"))
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
        item = self.tableWidget.verticalHeaderItem(0)
        item.setText(_translate("MainWindow", "New Row", None))
        item = self.tableWidget.verticalHeaderItem(1)
        item.setText(_translate("MainWindow", "New Row", None))
        item = self.tableWidget.verticalHeaderItem(2)
        item.setText(_translate("MainWindow", "New Row", None))
        item = self.tableWidget.verticalHeaderItem(3)
        item.setText(_translate("MainWindow", "New Row", None))
        item = self.tableWidget.verticalHeaderItem(4)
        item.setText(_translate("MainWindow", "New Row", None))
        item = self.tableWidget.verticalHeaderItem(5)
        item.setText(_translate("MainWindow", "New Row", None))
        item = self.tableWidget.verticalHeaderItem(6)
        item.setText(_translate("MainWindow", "New Row", None))
        item = self.tableWidget.verticalHeaderItem(7)
        item.setText(_translate("MainWindow", "New Row", None))
        item = self.tableWidget.verticalHeaderItem(8)
        item.setText(_translate("MainWindow", "New Row", None))
        item = self.tableWidget.verticalHeaderItem(9)
        item.setText(_translate("MainWindow", "New Row", None))
        item = self.tableWidget.verticalHeaderItem(10)
        item.setText(_translate("MainWindow", "New Row", None))
        item = self.tableWidget.verticalHeaderItem(11)
        item.setText(_translate("MainWindow", "New Row", None))
        item = self.tableWidget.verticalHeaderItem(12)
        item.setText(_translate("MainWindow", "New Row", None))
        item = self.tableWidget.horizontalHeaderItem(0)
        item.setText(_translate("MainWindow", "a", None))
        item = self.tableWidget.horizontalHeaderItem(1)
        item.setText(_translate("MainWindow", "b", None))
        item = self.tableWidget.horizontalHeaderItem(2)
        item.setText(_translate("MainWindow", "New Column", None))
        item = self.tableWidget.horizontalHeaderItem(3)
        item.setText(_translate("MainWindow", "d", None))


if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    MainWindow = QtGui.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())
埃利亚内斯克

要获取当前单元格的位置,我们使用columnViewportPosition()rowViewportPosition()方法分别返回相对于 QTableWidget 的行和列的 x、y 位置viewport(),然后我们使用该mapToGlobal()方法获取全局位置,我们将添加单元格的高度垂直移动它。

它创建一个弹出窗口,因为它将使用 QDialog 放置 QListWidget,这个小部件返回选定的文本。

class PopUp(QDialog):
    def __init__(self, labels):
        QDialog.__init__(self, None, Qt.Popup | Qt.FramelessWindowHint)
        self.itemSelected = ""
        self.setLayout(QVBoxLayout())
        lWidget = QListWidget(self)
        self.layout().addWidget(lWidget)
        lWidget.addItems(labels)
        lWidget.itemClicked.connect(self.onItemClicked)
        self.layout().setContentsMargins(0, 0, 0, 0)

    def onItemClicked(self, item):
        self.itemSelected = item.text()
        self.accept()

    def text(self):
        return self.itemSelected


class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        QMainWindow.__init__(self, parent)
        self.setupUi(self)
        self.tableWidget.clicked.connect(self.onClicked)

    def onClicked(self, index):
        row = index.row()
        column = index.column()
        x = self.tableWidget.columnViewportPosition(column)
        y = self.tableWidget.rowViewportPosition(row) + self.tableWidget.rowHeight(row)
        pos = self.tableWidget.viewport().mapToGlobal(QPoint(x, y))
        p = PopUp(["1", "2", "3", "4", "5"])
        p.move(pos)
        if p.exec_() == QDialog.Accepted:
            t_item = QTableWidgetItem(p.text())
            self.tableWidget.setItem(row, column, t_item)

截屏:

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在启动画面pyqt4中添加进度栏

来自分类Dev

如何在pyqt中更改Qtablewidget的特定单元格背景颜色

来自分类Dev

如何设置JTable中特定单元格的值?

来自分类Dev

PyQt:如何在PyQt4中的QGroupBox内添加网格布局

来自分类Dev

如何在Anaconda中安装PyQt4?

来自分类Dev

如何使用InternalId在PyQt4的QTreeView中获取文本

来自分类Dev

如何在Winform应用程序中获取datagridview的特定单元格的值

来自分类Dev

如何识别UICollectionview中的特定单元格

来自分类Dev

如何刷新嵌入在PYQT4中的MatPlotlib?

来自分类Dev

如何使用PyQt4在Ubuntu中播放声音?

来自分类Dev

如何显示特定单元格中的数据?

来自分类Dev

如何在python中访问csvfile的特定单元格

来自分类Dev

如何在python中从pyqt4升级到pyqt5

来自分类Dev

如何在数据框中添加名称并更改R中的特定单元格

来自分类Dev

如何使用PyQt4在Ubuntu中播放声音?

来自分类Dev

如何在Winform应用程序中获取datagridview的特定单元格的值

来自分类Dev

使用Python pyqt4在QTableWidget中获取特定行和列的单元格突出显示

来自分类Dev

如何在C1FlexGird中设置特定单元格的样式?

来自分类Dev

如何识别UICollectionview中的特定单元格

来自分类Dev

在PyQt4中我如何启动窗口

来自分类Dev

如何刷新嵌入在PYQT4中的MatPlotlib?

来自分类Dev

如何限制特定单元格中的字符

来自分类Dev

如何在PyQt4中旋转圆形鼠标

来自分类Dev

如何在 jsPDF 自动表格中识别 HTML 类或特定单元格

来自分类Dev

如何在swift 3中重新加载没有动画的特定单元格?

来自分类Dev

Android - 如何在特定单元格中显示 ImageView 并隐藏所有其他单元格

来自分类Dev

如果单元格值等于特定单词,如何在 Google Script 中运行函数

来自分类Dev

如何在 vaex 数据框中访问特定单元格?

来自分类Dev

如何在 PyQT4 表视图中突出显示每行中具有最高值的单元格

Related 相关文章

  1. 1

    如何在启动画面pyqt4中添加进度栏

  2. 2

    如何在pyqt中更改Qtablewidget的特定单元格背景颜色

  3. 3

    如何设置JTable中特定单元格的值?

  4. 4

    PyQt:如何在PyQt4中的QGroupBox内添加网格布局

  5. 5

    如何在Anaconda中安装PyQt4?

  6. 6

    如何使用InternalId在PyQt4的QTreeView中获取文本

  7. 7

    如何在Winform应用程序中获取datagridview的特定单元格的值

  8. 8

    如何识别UICollectionview中的特定单元格

  9. 9

    如何刷新嵌入在PYQT4中的MatPlotlib?

  10. 10

    如何使用PyQt4在Ubuntu中播放声音?

  11. 11

    如何显示特定单元格中的数据?

  12. 12

    如何在python中访问csvfile的特定单元格

  13. 13

    如何在python中从pyqt4升级到pyqt5

  14. 14

    如何在数据框中添加名称并更改R中的特定单元格

  15. 15

    如何使用PyQt4在Ubuntu中播放声音?

  16. 16

    如何在Winform应用程序中获取datagridview的特定单元格的值

  17. 17

    使用Python pyqt4在QTableWidget中获取特定行和列的单元格突出显示

  18. 18

    如何在C1FlexGird中设置特定单元格的样式?

  19. 19

    如何识别UICollectionview中的特定单元格

  20. 20

    在PyQt4中我如何启动窗口

  21. 21

    如何刷新嵌入在PYQT4中的MatPlotlib?

  22. 22

    如何限制特定单元格中的字符

  23. 23

    如何在PyQt4中旋转圆形鼠标

  24. 24

    如何在 jsPDF 自动表格中识别 HTML 类或特定单元格

  25. 25

    如何在swift 3中重新加载没有动画的特定单元格?

  26. 26

    Android - 如何在特定单元格中显示 ImageView 并隐藏所有其他单元格

  27. 27

    如果单元格值等于特定单词,如何在 Google Script 中运行函数

  28. 28

    如何在 vaex 数据框中访问特定单元格?

  29. 29

    如何在 PyQT4 表视图中突出显示每行中具有最高值的单元格

热门标签

归档