首页 > 解决方案 > 如何改变 QTableWidget 本身的位置

问题描述

如何更改 tableWidget 的位置?此方法不起作用:

self.tableWidget.move(100,100)

尝试了一些其他方法,如 self.tableWidget.x 和 self.tableWidget.y 但没有运气

表格截图:
表格截图

这是我的代码:

import sys
from PyQt5.QtGui import * 
from PyQt5.QtCore import Qt, pyqtSlot
from PyQt5.QtWidgets import * 
                      
#Main Window 
class App(QWidget): 
    def __init__(self): 
        super().__init__() 
        self.title = 'PyQt5 - QTableWidget'
        self.left = 200
        self.top = 100
        self.width = 740
        self.height = 880
        self.setWindowTitle(self.title) 
        self.setGeometry(self.left, self.top, self.width, self.height) 
        self.createTable() 
        self.layout = QVBoxLayout()
        self.layout.addWidget(self.tableWidget) 
        self.setLayout(self.layout)
        self.show() 
   
    def createTable(self):
        self.tableWidget = QTableWidget() 
        self.tableWidget.setRowCount(8)  
        self.tableWidget.setColumnCount(8) 
        self.tableWidget.setFixedSize(700,700)
        self.tableWidget.move(100,100)
        
        self.tableWidget.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.tableWidget.horizontalHeader().setStretchLastSection(True) 
        self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)

        self.tableWidget.verticalHeader().setStretchLastSection(True) 
        self.tableWidget.verticalHeader().setSectionResizeMode(QHeaderView.Stretch)
        
if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    ex = App() 
    sys.exit(app.exec_()) 

标签: pythonpython-3.xpyqtpyqt5

解决方案


如果您想要手动定位,那么您不应该使用布局,而只是将窗口作为父窗口传递。

import sys

from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QHeaderView, QTableWidget, QWidget

# Main Window
class App(QWidget):
    def __init__(self):
        super().__init__()
        self.title = "PyQt5 - QTableWidget"
        self.left = 200
        self.top = 100
        self.width = 740
        self.height = 880
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)
        self.createTable()

    def createTable(self):
        self.tableWidget = QTableWidget(self)
        self.tableWidget.setRowCount(8)
        self.tableWidget.setColumnCount(8)
        self.tableWidget.setFixedSize(700, 700)
        self.tableWidget.move(100, 100)

        self.tableWidget.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.tableWidget.horizontalHeader().setStretchLastSection(True)
        self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)

        self.tableWidget.verticalHeader().setStretchLastSection(True)
        self.tableWidget.verticalHeader().setSectionResizeMode(QHeaderView.Stretch)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    ex = App()
    ex.show()
    sys.exit(app.exec_())

推荐阅读