鱼C论坛

 找回密码
 立即注册
查看: 1937|回复: 3

[已解决]PyQt5的QTableWidget作为子控件使用后怎么在父窗口中调整其窗口大小

[复制链接]
发表于 2020-3-12 11:58:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
        我自己建了一个table的类,继承自QTableWidget,表格内部设置都慢慢的在网上找到了方法.但是在在父控件中调用时出现了问题.
        在父控件中调用时table总是会自动缩小并自己出现滑动条,图片我下面贴上来.
        目前解决办法是在table中设置setFixedSize , 但是总觉得不舒服,当表格内容有改变时,fixedSize 可能就需要改变,很烦躁.
        我想问一下,在父控件中调用时,有没有什么自动拉伸的办法.

               
        我尝试过使用        
        self.table1.setSizePolicy(QSizePolicy.Expanding,QSizePolicy.Expanding)
        但是好像没什么用.
最佳答案
2020-3-12 12:09:55
这是我在网上找的代码(找不到出处了,抱歉)
本来是不能随窗口缩放的,但是我修改了所有布局继承centralwidget,就可以随窗口缩放了

mainUi.py
# -*- coding: utf-8 -*-

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        # MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        # self.centralwidget.setObjectName("centralwidget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
        self.verticalLayout.setContentsMargins(1, 1, 1, 0)
        # self.verticalLayout.setObjectName("verticalLayout")
        self.txt_view = QtWidgets.QTextEdit(self.centralwidget)
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(8)
        self.txt_view.setFont(font)
        # self.txt_view.setObjectName("txt_view")
        self.verticalLayout.addWidget(self.txt_view)
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.centralwidget)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 7)
        # self.horizontalLayout.setObjectName("horizontalLayout")
        self.btn_open = QtWidgets.QPushButton(self.centralwidget)
        # self.btn_open.setObjectName("btn_open")
        self.horizontalLayout.addWidget(self.btn_open)
        self.btn_save = QtWidgets.QPushButton(self.centralwidget)
        # self.btn_save.setObjectName("btn_save")
        self.horizontalLayout.addWidget(self.btn_save)
        self.verticalLayout.addLayout(self.horizontalLayout)
        MainWindow.setCentralWidget(self.centralwidget)

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

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "文本编辑"))
        self.btn_open.setText(_translate("MainWindow", "打开文件"))
        self.btn_save.setText(_translate("MainWindow", "保存文件"))

main.py
# -*- coding: utf-8 -*-

from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog
import mainUi


class MainCode(QMainWindow, mainUi.Ui_MainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        mainUi.Ui_MainWindow.__init__(self)
        self.setupUi(self)
        self.btn_save.clicked.connect(self.on_save)
        self.btn_open.clicked.connect(self.on_open)

    def on_save(self):
        FullFileName, _ = QFileDialog.getSaveFileName(
            self, "文件另存为", r"./", "TXT (*.txt)"
        )
        if FullFileName == "":
            return
        set_text = self.txt_view.toPlainText()
        with open(FullFileName, "wt", encoding="utf-8") as f:
            f.write(set_text)
            f.close()

    def on_open(self):
        FullFileName, a = QFileDialog.getOpenFileName(
            self, "打开文件", r"./", "TXT (*.txt)"
        )
        if FullFileName == "":
            return
        with open(FullFileName, "rt", encoding="utf-8") as f:
            txtstr = f.read()
            self.txt_view.setText(txtstr)
            f.close()


if __name__ == "__main__":

    from sys import argv, exit

    app = QApplication(argv)
    md = MainCode()
    md.show()
    exit(app.exec())

运行main.py
具体原理我也不咋懂,应该可以启发一下

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-12 11:59:54 | 显示全部楼层
额.. 没办法贴图...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-12 12:09:41 From FishC Mobile | 显示全部楼层
看看能不能用adjustSize()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-12 12:09:55 | 显示全部楼层    本楼为最佳答案   
这是我在网上找的代码(找不到出处了,抱歉)
本来是不能随窗口缩放的,但是我修改了所有布局继承centralwidget,就可以随窗口缩放了

mainUi.py
# -*- coding: utf-8 -*-

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        # MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        # self.centralwidget.setObjectName("centralwidget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
        self.verticalLayout.setContentsMargins(1, 1, 1, 0)
        # self.verticalLayout.setObjectName("verticalLayout")
        self.txt_view = QtWidgets.QTextEdit(self.centralwidget)
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(8)
        self.txt_view.setFont(font)
        # self.txt_view.setObjectName("txt_view")
        self.verticalLayout.addWidget(self.txt_view)
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.centralwidget)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 7)
        # self.horizontalLayout.setObjectName("horizontalLayout")
        self.btn_open = QtWidgets.QPushButton(self.centralwidget)
        # self.btn_open.setObjectName("btn_open")
        self.horizontalLayout.addWidget(self.btn_open)
        self.btn_save = QtWidgets.QPushButton(self.centralwidget)
        # self.btn_save.setObjectName("btn_save")
        self.horizontalLayout.addWidget(self.btn_save)
        self.verticalLayout.addLayout(self.horizontalLayout)
        MainWindow.setCentralWidget(self.centralwidget)

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

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "文本编辑"))
        self.btn_open.setText(_translate("MainWindow", "打开文件"))
        self.btn_save.setText(_translate("MainWindow", "保存文件"))

main.py
# -*- coding: utf-8 -*-

from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog
import mainUi


class MainCode(QMainWindow, mainUi.Ui_MainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        mainUi.Ui_MainWindow.__init__(self)
        self.setupUi(self)
        self.btn_save.clicked.connect(self.on_save)
        self.btn_open.clicked.connect(self.on_open)

    def on_save(self):
        FullFileName, _ = QFileDialog.getSaveFileName(
            self, "文件另存为", r"./", "TXT (*.txt)"
        )
        if FullFileName == "":
            return
        set_text = self.txt_view.toPlainText()
        with open(FullFileName, "wt", encoding="utf-8") as f:
            f.write(set_text)
            f.close()

    def on_open(self):
        FullFileName, a = QFileDialog.getOpenFileName(
            self, "打开文件", r"./", "TXT (*.txt)"
        )
        if FullFileName == "":
            return
        with open(FullFileName, "rt", encoding="utf-8") as f:
            txtstr = f.read()
            self.txt_view.setText(txtstr)
            f.close()


if __name__ == "__main__":

    from sys import argv, exit

    app = QApplication(argv)
    md = MainCode()
    md.show()
    exit(app.exec())

运行main.py
具体原理我也不咋懂,应该可以启发一下

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-23 17:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表