如何将小部件的高度和宽度调整为 window 大小?
How to adjust height & width of a widget to the window size?
我正在做一个项目,我在 qt designer
中制作 UI 并在 python
中编写代码。我没有在 qt 设计器中设置 ui 小部件或 window 的任何高度和宽度属性。当我启动它时,它并没有覆盖整个 window。下面是代码:
app.py
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from ui.test import Ui_MainWindow
class Login(QMainWindow, Ui_MainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
app = QApplication(sys.argv)
main_window = Login()
main_window.show()
sys.exit(app.exec_())
test.py(已从 test.ui 转换而来)
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1177, 480)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.table_widget = QtWidgets.QTableWidget(self.centralwidget)
self.table_widget.setGeometry(QtCore.QRect(10, 10, 1161, 421))
self.table_widget.setRowCount(20)
self.table_widget.setColumnCount(20)
self.table_widget.setObjectName("table_widget")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
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_())
当我启动代码时,它看起来像下面这样:
在上图中,我可以移动滚动条来查看所有行和列,但是如果我单击最大化 window,它看起来如下所示:
但在上图中,高度和宽度保持不变。我怎样才能让它全屏显示,以便小部件的高度和宽度与 window 大小匹配。请帮忙。谢谢
您忘记将 table_widget 添加到 centralwidget,所以您应该使用布局。
这是关于 Layout Management. You can also set the layouts in Qt Designer (Using Layouts in Qt Designer) 的信息。
layout = QVBoxLayout()
layout.addWidget(self.table_widget)
self.centralwidget.setLayout(layout)
完整代码。
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QVBoxLayout
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1177, 480)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.table_widget = QtWidgets.QTableWidget(self.centralwidget)
# adding table_widget to central widget
layout = QVBoxLayout()
layout.addWidget(self.table_widget)
self.centralwidget.setLayout(layout)
# end
self.table_widget.setGeometry(QtCore.QRect(10, 10, 1161, 421))
self.table_widget.setRowCount(20)
self.table_widget.setColumnCount(20)
self.table_widget.setObjectName("table_widget")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
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_())
我正在做一个项目,我在 qt designer
中制作 UI 并在 python
中编写代码。我没有在 qt 设计器中设置 ui 小部件或 window 的任何高度和宽度属性。当我启动它时,它并没有覆盖整个 window。下面是代码:
app.py
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from ui.test import Ui_MainWindow
class Login(QMainWindow, Ui_MainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
app = QApplication(sys.argv)
main_window = Login()
main_window.show()
sys.exit(app.exec_())
test.py(已从 test.ui 转换而来)
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1177, 480)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.table_widget = QtWidgets.QTableWidget(self.centralwidget)
self.table_widget.setGeometry(QtCore.QRect(10, 10, 1161, 421))
self.table_widget.setRowCount(20)
self.table_widget.setColumnCount(20)
self.table_widget.setObjectName("table_widget")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
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_())
当我启动代码时,它看起来像下面这样:
在上图中,我可以移动滚动条来查看所有行和列,但是如果我单击最大化 window,它看起来如下所示:
但在上图中,高度和宽度保持不变。我怎样才能让它全屏显示,以便小部件的高度和宽度与 window 大小匹配。请帮忙。谢谢
您忘记将 table_widget 添加到 centralwidget,所以您应该使用布局。
这是关于 Layout Management. You can also set the layouts in Qt Designer (Using Layouts in Qt Designer) 的信息。
layout = QVBoxLayout()
layout.addWidget(self.table_widget)
self.centralwidget.setLayout(layout)
完整代码。
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QVBoxLayout
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1177, 480)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.table_widget = QtWidgets.QTableWidget(self.centralwidget)
# adding table_widget to central widget
layout = QVBoxLayout()
layout.addWidget(self.table_widget)
self.centralwidget.setLayout(layout)
# end
self.table_widget.setGeometry(QtCore.QRect(10, 10, 1161, 421))
self.table_widget.setRowCount(20)
self.table_widget.setColumnCount(20)
self.table_widget.setObjectName("table_widget")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
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_())