RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1370958
Accepted
aqua
aqua
Asked:2022-06-13 04:36:18 +0000 UTC2022-06-13 04:36:18 +0000 UTC 2022-06-13 04:36:18 +0000 UTC

创建用户表

  • 772

如何创建只读表而不能选择、编辑表的内容及其大小。

我无法编辑表格中的内容及其大小,并且我想通过创建两个表格并使用样式表将选择颜色更改为背景颜色来制造无法选择的错觉,但是我没有找到如何删除虚线并调整行列的大小。

现在看起来像这样:

在此处输入图像描述

我希望它看起来像这样:

在此处输入图像描述

我的代码:

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(440, 450)
        MainWindow.setStyleSheet("background-color: #ffffff")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setStyleSheet("QTableWidget {\n"
"    selection-background-color: #ffffff;\n"
"    selection-color: #000000;\n"
"    gridline-color: #000000;\n"
"}\n"
"QHeaderView::section {\n"
"    background-color: #cccccc;\n"
"    border-style: none;\n"
"    border-bottom: 1px solid #000000;\n"
"    border-right: 1px solid #000000;\n"
"}\n"
"QTableWidget QTableCornerButton::section {\n"
"    background-color: #cccccc;\n"
"    border: 1px solid #000000;\n"
"}\n"
"QHeaderView::section:horizontal\n"
"{\n"
"    border-top: 1px solid #000000;\n"
"}\n"
"QHeaderView::section:vertical\n"
"{\n"
"    border-left: 1px solid #000000;\n"
"}\n"
"QTableWidget {\n"
"    border: 0px solid ;\n"
"}\n"
"/*QScrollBar*/\n"
"QScrollBar:horizontal {\n"
"    border-radius: 10;\n"
"    border: 2px solid #3d3d3d;\n"
"    background: #595959;\n"
"}\n"
"QScrollBar::handle:horizontal {\n"
"    border-radius: 8;\n"
"    background: #ffffff;\n"
"    min-width: 20px;\n"
"}\n"
"QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal {\n"
"    border: none;\n"
"    background: none;\n"
"}\n"
"QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal{\n"
"    background: none;\n"
"}\n"
"\n"
"QScrollBar:vertical {\n"
"    border-radius: 10;\n"
"    border: 2px solid #3d3d3d;\n"
"    background: #595959;\n"
"}\n"
"QScrollBar::handle:vertical {\n"
"    border-radius: 8;\n"
"    background: #ffffff;\n"
"    min-width: 20px;\n"
"}\n"
"QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical {\n"
"    border: none;\n"
"    background: none;\n"
"}\n"
"QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical{\n"
"    background: none;\n"
"}")
        self.centralwidget.setObjectName("centralwidget")
        self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
        self.tableWidget.setGeometry(QtCore.QRect(0, 0, 440, 24))
        self.tableWidget.setStyleSheet("")
        self.tableWidget.setObjectName("tableWidget")
        self.tableWidget.setColumnCount(0)
        self.tableWidget.setRowCount(0)
        self.tableWidget_2 = QtWidgets.QTableWidget(self.centralwidget)
        self.tableWidget_2.setGeometry(QtCore.QRect(0, 24, 440, 426))
        self.tableWidget_2.setObjectName("tableWidget_2")
        self.tableWidget_2.setColumnCount(0)
        self.tableWidget_2.setRowCount(0)
        MainWindow.setCentralWidget(self.centralwidget)

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

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))


class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        mas_column = ['1', '2', '3', '4', '5', '6']
        self.tableWidget.setColumnCount(len(mas_column))
        for i in range(len(mas_column)):
            item = QtWidgets.QTableWidgetItem()
            font = QtGui.QFont()
            font.setFamily('Montserrat')
            font.setPointSize(6)
            font.setBold(True)
            font.setWeight(75)
            item.setFont(font)
            item.setText(mas_column[i])
            self.tableWidget.setHorizontalHeaderItem(i, item)
        self.tableWidget.horizontalHeader().setDefaultSectionSize(440//len(mas_column))
        self.tableWidget.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
        self.tableWidget.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Fixed)
        self.tableWidget.verticalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Fixed)

        mas_row = ['1', '2', '3']
        self.tableWidget_2.setColumnCount(len(mas_column) - 1)
        self.tableWidget_2.setRowCount(len(mas_row))
        self.tableWidget_2.horizontalHeader().setVisible(False)
        for i in range(len(mas_row)):
            item = QtWidgets.QTableWidgetItem()
            font = QtGui.QFont()
            font.setFamily('Montserrat')
            font.setPointSize(6)
            font.setBold(True)
            font.setWeight(75)
            item.setFont(font)
            item.setText(mas_row[i])
            self.tableWidget_2.setVerticalHeaderItem(i, item)
        self.tableWidget_2.horizontalHeader().setDefaultSectionSize(440//len(mas_column))
        self.tableWidget_2.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
        self.tableWidget_2.verticalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Fixed)

        n = 0
        mas_cell = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15']
        for j in range(len(mas_column) - 1):
            for i in range(len(mas_row)):
                item = QtWidgets.QTableWidgetItem()
                item.setTextAlignment(QtCore.Qt.AlignCenter)
                font = QtGui.QFont()
                font.setFamily('Montserrat')
                font.setPointSize(6)
                font.setBold(True)
                font.setWeight(75)
                item.setFont(font)
                item.setText(mas_cell[n])
                n += 1
                self.tableWidget_2.setItem(i, j, item)

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

我的stylesheet :

QTableWidget {
    selection-background-color: #ffffff;
    selection-color: #000000;
    gridline-color: #000000;
}
QHeaderView::section {
    background-color: #cccccc;
    border-style: none;
    border-bottom: 1px solid #000000;
    border-right: 1px solid #000000;
}
QTableWidget QTableCornerButton::section {
    background-color: #cccccc;
    border: 1px solid #000000;
}
QHeaderView::section:horizontal
{
    border-top: 1px solid #000000;
}
QHeaderView::section:vertical
{
    border-left: 1px solid #000000;
}
QTableWidget {
    border: 0px solid ;
}
python
  • 2 2 个回答
  • 10 Views

2 个回答

  • Voted
  1. Sergey Tatarincev
    2022-06-13T11:10:00Z2022-06-13T11:10:00Z

    如果更容易呢?

    table.setEnabled(False)
    table.setStyleSheet("background-color: white;color: black;")
    
    • 2
  2. Best Answer
    Alexander Chernin
    2022-06-13T18:34:06Z2022-06-13T18:34:06Z

    如何创建无法选择、编辑表格内容及其大小的只读表格?

    一张表的示例代码(在我看来,不需要第二张)

    from PyQt5 import QtCore, QtGui, QtWidgets
    from PyQt5.QtWidgets import QTableWidget, QAbstractItemView
    
    if __name__ == '__main__':
        import sys
        app = QtWidgets.QApplication(sys.argv)
        table = QTableWidget()
        table.setColumnCount(6)
        table.setRowCount(10)
    
        # Запретить выбор элементов
        table.setSelectionMode(QAbstractItemView.NoSelection)
    
        # Запретить фокус (убираем рамку выделения ячейки)
        table.setFocusPolicy(QtCore.Qt.NoFocus)
    
        # И никакого редактирования
        table.setEditTriggers(QAbstractItemView.NoEditTriggers)
    
        # установка стилей
        table.setStyleSheet(...)
    
        # заполнение таблицы
        q = 0
        for i in range(table.columnCount()):
            for j in range(table.rowCount()):
                table.setItem(j, i, QTableWidgetItem(f'{q + 1}'))
                q = q + 1
    
        table.show()
        sys.exit(app.exec_())
    
    • 2

相关问题

  • 是否可以以某种方式自定义 QTabWidget?

  • telebot.anihelper.ApiException 错误

  • Python。检查一个数字是否是 3 的幂。输出 无

  • 解析多个响应

  • 交换两个数组的元素,以便它们的新内容也反转

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5