Есть ли способ получить фактический размер QFrame в PyQt5? Разрешение моего монитора 1920х1080. После того, как я добавил QFrame в макет, он заполняет все окно в моем случае около 1200 пикселей. Однако команда width() возвращает 640. Кажется, размер по умолчанию 640x480, и он не меняется при запросе?
Я хочу иметь возможность центрировать виджет без использования макетов, потому что я планирую использовать несколько наложений в своем дизайне.
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import PyQt5.QtWidgets
import sys
class MainWindow(QMainWindow):
def __init__(self, parent):
QMainWindow.__init__(self, parent)
self.setWindowTitle('Sample')
size_object = PyQt5.QtWidgets.QDesktopWidget ().screenGeometry ( -1 ) # active screen
scr_width = size_object.width ()
scr_height = size_object.height()
self.resize ( 3 / 4 * scr_width, 3 / 4 * scr_height )
qr = self.frameGeometry() # geometry of the main window
cp = QDesktopWidget().availableGeometry().center() # center point of screen
qr.moveCenter(cp) # move rectangle's center point to screen's center point
self.move(qr.topLeft()) # top left of rectangle becomes top left of window centering it
self.setCentralWidget ( QWidget ( self ) )
self.hbox = QHBoxLayout ()
self.centralWidget ().setLayout ( self.hbox )
self.frame_sample = QFrame ()
self.hbox.addWidget ( self.frame_sample )
self.frame_sample.setStyleSheet ( "background-color: rgb(200, 100, 255)" )
button_go = QPushButton ("sample", self.frame_sample )
button_go.setStyleSheet (
'QPushButton {background: red; yellow; font-weight: bold;'
' text-decoration: underline; text-align: middle;}' )
button_go.resize ( 100, 100 )
button_go.move ( (self.frame_sample.width () - button_go.width ()) / 2,
(self.frame_sample.height () - button_go.height ()) / 2 )
app = QApplication ( sys.argv )
myWindow = MainWindow ( None )
myWindow.show ()
app.exec_ ()
Я хочу, чтобы кнопка отображалась в середине QFrame на основе рассчитанной позиции.
wndw_width
? - person eyllanesc   schedule 23.07.2018