Issue
I made a ui that dont uses layouts but when i made it full screen buttons just stayed top left corner and seemed very small.
Pixelation doesn't matter for me i just wanna make things bigger. (when the resolution is 1920x1080 it'll be normal but when we made it 4k, things will be 4x bigger)
Is stretching all the window content possible with pyqt5?
Like this example that i made in mspaint:
main code ⬇️
from PyQt5.QtWidgets import QMainWindow, QApplication
import sys
from converted_ui import Ui_MainWindow
class MainUI(QMainWindow):
def __init__(self):
super(MainUI, self).__init__()
# Initialize the user interface
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
if __name__ == "__main__":
app = QApplication(sys.argv)
ui = MainUI()
ui.show()
sys.exit(app.exec_())
converted_ui ⬇️
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(70, 80, 250, 250))
self.pushButton.setObjectName("pushButton")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(465, 170, 106, 46))
self.label.setObjectName("label")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
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 retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pushButton.setText(_translate("MainWindow", "PushButton"))
self.label.setText(_translate("MainWindow", "Lorem Ipsum"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
Solution
Yes, you can and the resizeEvent() method is where you you can change the size and location of widgets.
But this is not practical and it is better to use layout managers.
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMainWindow, QApplication
#from converted_ui import Ui_MainWindow
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
# ---------------------------------------------> vvvvvvvvvvvvvvvv <----
# self.pushButton.setGeometry(QtCore.QRect(70, 80, 250, 250))
self.pushButton.setGeometry(QtCore.QRect(80, 60, 200, 200))
self.pushButton.setObjectName("pushButton")
self.label = QtWidgets.QLabel(self.centralwidget)
# ----------------------------------------> vvvvvvvvvvvvvvvvv <----
# self.label.setGeometry(QtCore.QRect(465, 170, 106, 46))
self.label.setGeometry(QtCore.QRect(460, 60, 200, 200))
self.label.setObjectName("label")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
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 retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pushButton.setText(_translate("MainWindow", "PushButton"))
self.label.setText(_translate("MainWindow", "Lorem Ipsum"))
class MainUI(QMainWindow, Ui_MainWindow):
def __init__(self):
super(MainUI, self).__init__()
self.setupUi(self)
self.label.setStyleSheet("background-color: #1E5F74; color: #47F5E1;")
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.w = 800
self.h = 600
self.x = 80
self.y = 60
self.setMinimumSize(self.w/3, self.h/3)
self.widthFactor = 1
self.heightFactor = 1
def resizeEvent(self, event):
self.widthFactor = self.rect().width() / 800
self.heightFactor = self.rect().height()/ 600
w = self.w * 0.25 * self.widthFactor
self.pushButton.resize(w, w)
self.pushButton.move(self.x * self.widthFactor , self.y * self.heightFactor)
self.label.resize(w, w)
self.label.move((self.x * self.widthFactor + w * 2), self.y * self.heightFactor)
super(MainUI, self).resizeEvent(event)
if __name__ == "__main__":
app = QApplication(sys.argv)
ui = MainUI()
ui.show()
sys.exit(app.exec_())
Answered By - S. Nick
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.