python - 如何在 MDI 区域中显示子窗口?
问题描述
所以我对 MDI 区域进行了一些测试,问题是当我尝试在 MDI 中打开子窗口时会发生这种情况。
有什么方法可以让小子窗口变得足够大以便可读吗?
我在一个唯一的测试文件中做所有事情。
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(488, 392)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_3.setGeometry(QtCore.QRect(280, 290, 91, 51))
self.pushButton_3.setObjectName("pushButton_3")
self.pushButton_3.clicked.connect(self.Open)
self.mdiArea = QtWidgets.QMdiArea(self.centralwidget)
self.mdiArea.setGeometry(QtCore.QRect(60, 20, 261, 211))
self.mdiArea.setObjectName("mdiArea")
self.subwindow = QtWidgets.QWidget()
self.subwindow.setObjectName("subwindow")
self.pushButton = QtWidgets.QPushButton(self.subwindow)
self.pushButton.setGeometry(QtCore.QRect(100, 80, 56, 17))
self.pushButton.setObjectName("pushButton")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 488, 18))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def Open(self):
self.mdiArea.addSubWindow(self.subwindow)
self.subwindow.show()
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pushButton_3.setText(_translate("MainWindow", "Open"))
self.subwindow.setWindowTitle(_translate("MainWindow", "Subwindow"))
self.pushButton.setText(_translate("MainWindow", "YAY!"))
class mywindow(QtWidgets.QMainWindow):
def __init__(self):
super(mywindow, self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
app = QtWidgets.QApplication([])
application = mywindow()
application.show()
app.exec()
解决方案
您必须调整 QMdiSubWindow 的大小:
def Open(self):
sw = self.mdiArea.addSubWindow(self.subwindow)
self.subwindow.show()
sw.resize(640, 480)
推荐阅读
- python-3.x - 使整个 tkinter 窗口变暗
- jquery - 在数据表中显示下拉列表
- javascript - 使用 PHP 的 for-each 循环访问嵌套对象的 JSON 数组的所有项目
- python - 如何在系统托盘中显示/隐藏 Windows 控制台?
- microsoft-graph-api - 使用 Microsoft Graph API 获取聊天消息 MIME 的任何方式
- three.js - 使用 raycaster 对 mapbox 上的 3d 对象进行不均匀的点击检测
- c# - 应用程序属性设置缓存在哪里?
- c - C - 汇编错误:无法转换为指针类型
- c# - 使用 IronPdf 将带有图表的 HTML 转换为 PDF
- python - ValueError:未知层:尝试在 keras 中加载模型时的名称