[Warning]QWindowsWindow::setGeometry: Unable to set geometry
1946x1017+0+23 on QWidgetWindow/‘…’. Resulting geometry:
1920x1017+0+23 (frame: 8, 31, 8, 8, custom margin: 0, 0, 0, 0, minimum
size: 1946x953, maximum size: 16777215x16777215).
窗口某些部件,设置setGeometry的大小,超出主窗口的屏幕区域,会出现当前窗口超出当前屏幕的大小。
设置主窗口的最小尺寸。
setMinimumSize(QSize(1200, 600));
setWindowState(Qt::WindowMaximized);
博主,自己的程序突然报了一种错误如下
setGeometry: Unable to set geometry 1420x1421+8+31 on QWidgetWindow/'MainWindowWindow'.
Resulting geometry: 1420x1181+8+31 (frame: 8, 31, 8, 8, custom margin: 0, 0, 0, 0, minimum size: 1376x1072, maximum size: 16777215x16777215).
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'layoutWin.ui'
# Created by: PyQt5 UI code generator 5.8.1
# WARNING! All changes made i...
class Calender(QtGui.QWidget):
def __init__(self,parent = None):
QtGui.QWidget.__init__(self,parent)
self.setGeometry(300,300,350,300)
self.setWindowTitle("Calendar")
self.cal = QtGui.QCalendarWidget(self)
self.cal.setGridVisible(True)
self.connect(self.cal,QtCore.SIGNAL("selectionChanged()"),self.showDate)
self.label = QtGui.QLabel(self)
date = self.cal.selectedDate()
self.label.setText(str(date.toPyDate()))
vbox = QtGui.QVBoxLayout()
vbox.addWidget(self.cal)
vbox.addWidget(self.label)
self.setLayout(vbox)
def showDate(self):
date = self.cal.selectedDate()
self.label.setText(str(date.toPyDate()))
app = QtGui.QApplication(sys.argv)
w = Calender()
w.show()
sys.exit(app.exec_())
本例设置为垂直左侧scroll
主要思想是利用一个长度为0的mid_frame,高度为待设置qwidget的高度,用mid_frame的moveEvent事件驱动qwidget的move
我项目的效果图:
代码及注释
from PyQt5.Qt import *
from sys import argv
# 主窗口
class Main(QMainWindow):
def __init__(self):
super().__init__(None)
self.setGeometry(500, 500, 500, 500)
# 实例化
self.main
由于子窗口和父窗口的大小关系不健康,导致父窗口resize失败,失败后会自定义大小
解决方法:
首先,修改父窗口尺寸,保证其大小可以容纳子部件,可以使用setFixSize()之类的函数修改父窗口尺寸。
其次,一定要保证修改父窗口尺寸的函数是放在窗口布局代码之前,如图,我的setInterface()函数内是对窗口布局,若this->setFixSize(QSize(1200,800));函数在setInterface()后面,则还是会报这个错误,只需要将函数位置换一下即可