鱼C论坛

 找回密码
 立即注册
查看: 2339|回复: 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
  1. # -*- coding: utf-8 -*-

  2. from PyQt5 import QtCore, QtGui, QtWidgets


  3. class Ui_MainWindow(object):
  4.     def setupUi(self, MainWindow):
  5.         # MainWindow.setObjectName("MainWindow")
  6.         MainWindow.resize(800, 600)
  7.         self.centralwidget = QtWidgets.QWidget(MainWindow)
  8.         # self.centralwidget.setObjectName("centralwidget")
  9.         self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
  10.         self.verticalLayout.setContentsMargins(1, 1, 1, 0)
  11.         # self.verticalLayout.setObjectName("verticalLayout")
  12.         self.txt_view = QtWidgets.QTextEdit(self.centralwidget)
  13.         font = QtGui.QFont()
  14.         font.setFamily("微软雅黑")
  15.         font.setPointSize(8)
  16.         self.txt_view.setFont(font)
  17.         # self.txt_view.setObjectName("txt_view")
  18.         self.verticalLayout.addWidget(self.txt_view)
  19.         self.horizontalLayout = QtWidgets.QHBoxLayout(self.centralwidget)
  20.         self.horizontalLayout.setContentsMargins(0, 0, 0, 7)
  21.         # self.horizontalLayout.setObjectName("horizontalLayout")
  22.         self.btn_open = QtWidgets.QPushButton(self.centralwidget)
  23.         # self.btn_open.setObjectName("btn_open")
  24.         self.horizontalLayout.addWidget(self.btn_open)
  25.         self.btn_save = QtWidgets.QPushButton(self.centralwidget)
  26.         # self.btn_save.setObjectName("btn_save")
  27.         self.horizontalLayout.addWidget(self.btn_save)
  28.         self.verticalLayout.addLayout(self.horizontalLayout)
  29.         MainWindow.setCentralWidget(self.centralwidget)

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

  32.     def retranslateUi(self, MainWindow):
  33.         _translate = QtCore.QCoreApplication.translate
  34.         MainWindow.setWindowTitle(_translate("MainWindow", "文本编辑"))
  35.         self.btn_open.setText(_translate("MainWindow", "打开文件"))
  36.         self.btn_save.setText(_translate("MainWindow", "保存文件"))
复制代码


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

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


  4. class MainCode(QMainWindow, mainUi.Ui_MainWindow):
  5.     def __init__(self):
  6.         QMainWindow.__init__(self)
  7.         mainUi.Ui_MainWindow.__init__(self)
  8.         self.setupUi(self)
  9.         self.btn_save.clicked.connect(self.on_save)
  10.         self.btn_open.clicked.connect(self.on_open)

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

  21.     def on_open(self):
  22.         FullFileName, a = QFileDialog.getOpenFileName(
  23.             self, "打开文件", r"./", "TXT (*.txt)"
  24.         )
  25.         if FullFileName == "":
  26.             return
  27.         with open(FullFileName, "rt", encoding="utf-8") as f:
  28.             txtstr = f.read()
  29.             self.txt_view.setText(txtstr)
  30.             f.close()


  31. if __name__ == "__main__":

  32.     from sys import argv, exit

  33.     app = QApplication(argv)
  34.     md = MainCode()
  35.     md.show()
  36.     exit(app.exec())
复制代码


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

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-12 11:59:54 | 显示全部楼层
额.. 没办法贴图...
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-12 12:09:41 From FishC Mobile | 显示全部楼层
看看能不能用adjustSize()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

  2. from PyQt5 import QtCore, QtGui, QtWidgets


  3. class Ui_MainWindow(object):
  4.     def setupUi(self, MainWindow):
  5.         # MainWindow.setObjectName("MainWindow")
  6.         MainWindow.resize(800, 600)
  7.         self.centralwidget = QtWidgets.QWidget(MainWindow)
  8.         # self.centralwidget.setObjectName("centralwidget")
  9.         self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
  10.         self.verticalLayout.setContentsMargins(1, 1, 1, 0)
  11.         # self.verticalLayout.setObjectName("verticalLayout")
  12.         self.txt_view = QtWidgets.QTextEdit(self.centralwidget)
  13.         font = QtGui.QFont()
  14.         font.setFamily("微软雅黑")
  15.         font.setPointSize(8)
  16.         self.txt_view.setFont(font)
  17.         # self.txt_view.setObjectName("txt_view")
  18.         self.verticalLayout.addWidget(self.txt_view)
  19.         self.horizontalLayout = QtWidgets.QHBoxLayout(self.centralwidget)
  20.         self.horizontalLayout.setContentsMargins(0, 0, 0, 7)
  21.         # self.horizontalLayout.setObjectName("horizontalLayout")
  22.         self.btn_open = QtWidgets.QPushButton(self.centralwidget)
  23.         # self.btn_open.setObjectName("btn_open")
  24.         self.horizontalLayout.addWidget(self.btn_open)
  25.         self.btn_save = QtWidgets.QPushButton(self.centralwidget)
  26.         # self.btn_save.setObjectName("btn_save")
  27.         self.horizontalLayout.addWidget(self.btn_save)
  28.         self.verticalLayout.addLayout(self.horizontalLayout)
  29.         MainWindow.setCentralWidget(self.centralwidget)

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

  32.     def retranslateUi(self, MainWindow):
  33.         _translate = QtCore.QCoreApplication.translate
  34.         MainWindow.setWindowTitle(_translate("MainWindow", "文本编辑"))
  35.         self.btn_open.setText(_translate("MainWindow", "打开文件"))
  36.         self.btn_save.setText(_translate("MainWindow", "保存文件"))
复制代码


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

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


  4. class MainCode(QMainWindow, mainUi.Ui_MainWindow):
  5.     def __init__(self):
  6.         QMainWindow.__init__(self)
  7.         mainUi.Ui_MainWindow.__init__(self)
  8.         self.setupUi(self)
  9.         self.btn_save.clicked.connect(self.on_save)
  10.         self.btn_open.clicked.connect(self.on_open)

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

  21.     def on_open(self):
  22.         FullFileName, a = QFileDialog.getOpenFileName(
  23.             self, "打开文件", r"./", "TXT (*.txt)"
  24.         )
  25.         if FullFileName == "":
  26.             return
  27.         with open(FullFileName, "rt", encoding="utf-8") as f:
  28.             txtstr = f.read()
  29.             self.txt_view.setText(txtstr)
  30.             f.close()


  31. if __name__ == "__main__":

  32.     from sys import argv, exit

  33.     app = QApplication(argv)
  34.     md = MainCode()
  35.     md.show()
  36.     exit(app.exec())
复制代码


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

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-29 14:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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