首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pyqt sizehint方法不能在没有classlevel的情况下工作

pyqt sizehint方法不能在没有classlevel的情况下工作
EN

Stack Overflow用户
提问于 2013-07-04 16:10:30
回答 1查看 1.4K关注 0票数 0

如果我在类级别使用QtGui.QWidget,它会通过self.sizeHint()方法给出窗口大小

代码语言:javascript
复制
class MainWin(QtGui.QWidget):
    def __init__(self,parent=None):
        QtGui.QWidget.__init__(self,parent)
        print(self.sizeHint())

但是如果我使用不带类的QtGui.QWidget,刚才提到的below.it只打印PyQt4.QtCore.QSize(-1,-1)。有什么问题吗?

代码语言:javascript
复制
app=QtGui.QApplication(sys.argv)
win = QtGui.QWidget()
print(win.sizeHint())
win.setFocusPolicy(QtCore.Qt.StrongFocus)
win.show()


app.exec_()
EN

回答 1

Stack Overflow用户

发布于 2013-07-11 15:36:46

如果小部件没有布局,sizeHint()的默认实现将返回无效的大小(-1,-1),否则将返回布局的首选大小。因此,您需要设置一些布局(适用于两种情况):

代码语言:javascript
复制
from PyQt4 import QtGui, QtCore

class MainWin(QtGui.QWidget):
    def __init__(self,parent=None):
        QtGui.QWidget.__init__(self,parent)
        lay = QtGui.QGridLayout() 
        self.setLayout(lay)
        print "case 1: ", self.sizeHint()

if __name__ == '__main__':
    import sys
    app = QtGui.QApplication(sys.argv)

    #case 1   
    win=MainWin()
    win.show()

    #case 2
    win1 = QtGui.QWidget()
    win1.setFocusPolicy(QtCore.Qt.StrongFocus)   
    lay = QtGui.QGridLayout() 
    win1.setLayout(lay)    
    win1.show()
    print "case 2: ", win1.sizeHint()

    sys.exit(app.exec_())
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17465072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档