Comment définir la taille initiale de widget en PyQt de plus de 2/3rds de l'écran
Dans la fenêtre principale, j'ai une centrale widget qui a une taille normale, et je voudrais de l'initialiser à cette taille. Cependant, je ne veux pas qu'il soit fixé à cette taille; l'utilisateur doit être en mesure de réduire ou les agrandir.
La Documentation de Qt stipule que:
Remarque: La taille de haut niveau, les widgets sont limitées à des 2/3 de la
bureau de la hauteur et de la largeur. Vous pouvez redimensionner() du widget manuellement si
ces limites sont insuffisantes.
Mais je suis incapable d'utiliser le resize
méthode prescrite.
Minimales suivantes exemple illustre bien le problème: Si la largeur et la hauteur est donnée par w
et h
est inférieur aux 2/3 de celle de l'écran, la fenêtre devient la taille attendue. S'ils sont supérieurs, la fenêtre se met un peu tronquée de la taille.
#!/usr/bin/env python
from PyQt4 import QtCore, QtGui
import sys
w = 1280; h = 720
app = QtGui.QApplication (sys.argv [1:])
frm = QtGui.QFrame ()
frm.sizeHint = lambda: QtCore.QSize (w, h)
win = QtGui.QMainWindow ()
win.setCentralWidget (frm)
win.show ()
sys.exit (app.exec_ ())
- Monkey patching méthodes sur des bibliothèques c++ fonctionne rarement. Avez-vous essayé d'utiliser l'héritage afin de remplacer la
sizeHint
méthode à la place? sizeHint
est ajouté avec succès à l'objet; si la largeur et la hauteur est inférieure à 2/3 de l'écran, le widget obtient la bonne taille. (Cette contrainte est codé en dur dans Qt)
Vous devez vous connecter pour publier un commentaire.
Cela devrait le faire pour vous, je pense que
win.statusBar ().showMessage ('Hello, World!')
, la centrale widget a moins que la taille spécifiée.win.resize(w, h + win.statusBar().size ().height ())
pour accueillir pour toutes les autres widget j'ai peut-être dans la fenêtre principale, mais je souhaite un moins lourd solution.La réponse ci-dessus est très bien, sauf que
QApplication
,QFrame
etQMainWindow
sont pas partie deQtGui
officiel de l' PyQt5. Ils font partie de QtWidgets.