- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于编程类项目,我们需要开发一个应用程序,并且必须使用 PYQT5 作为 GUI。
我有一个基于 QMainWindow 的类。有几行代码我不太明白。下面是初始化:
# Snippet 1
class ApplicationWindow(QtWidgets.QMainWindow):
def __init__(self):
QtWidgets.QMainWindow.__init__(self)
# self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
self.setWindowTitle("Main Window")
然后,定义以下变量/GUI 元素:
# Snippet 2
self.main_widget = QtWidgets.QWidget(self)
l = QtWidgets.QVBoxLayout(self.main_widget)
sc = MyStaticMplCanvas(width=5, height=4, dpi=100) # just some graph
dc = MyDynamicMplCanvas(width=5, height=4, dpi=100) # another graph
l.addWidget(sc)
l.addWidget(dc)
然后,我尝试添加包含以下内容的水平框布局:
# Snippet 3
x = QtWidgets.QHBoxLayout(self.main_widget) # new
b1 = QtWidgets.QPushButton("Test1") # new
b2 = QtWidgets.QPushButton("Test2") # new
x.addWidget(p1) # new
x.addWidget(p2) # new
最后,生成了中央小部件:
# Snippet 4
self.main_widget.setFocus()
self.setCentralWidget(self.main_widget)
程序本身不会产生错误并且工作正常。但窗口中仅显示片段 2 中的两个图形。如果删除
self.main_widget
来自
l = QtWidgets.QVBoxLayout(self.main_widget)
并将括号留空,仅显示代码片段 3 中的按钮。
以下赋值背后的含义是什么?
self.main_widget = QtWidgets.QWidget(self)
您是否能够将垂直和水平框布局合并为一个布局,从而将两个按钮以及两个图表显示为中央小部件?这是我最初的计划,我尝试使用 addLayout() 和 setLayout() 选项进行一些操作,并希望将这些布局添加到 setCentralWidget() 但没有成功。
您知道如何在基于 QMainWindow 的类中将多个框布局的组合显示为中央小部件吗?
非常感谢。 :)
最佳答案
您可以在布局上使用 addLayout()
嵌套布局;然后,内部布局将成为其插入的布局的子级。
class ApplicationWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
# self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
self.setWindowTitle("Main Window")
self.main_widget = QtWidgets.QWidget(self)
self.main_widget.setFocus()
self.setCentralWidget(self.main_widget)
l = QtWidgets.QVBoxLayout(self.main_widget)
sc = MyStaticMplCanvas(width=5, height=4, dpi=100) # just some graph
dc = MyDynamicMplCanvas(width=5, height=4, dpi=100) # another graph
l.addWidget(sc)
l.addWidget(dc)
# Snippet 3
x = QtWidgets.QHBoxLayout() # self.main_widget) # new
b1 = QtWidgets.QPushButton("Test1") # new
b2 = QtWidgets.QPushButton("Test2") # new
x.addWidget(b1) # new + b1
x.addWidget(b2) # new + b2
l.addLayout(x) # <----
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = ApplicationWindow()
MainWindow.show()
sys.exit(app.exec_())
关于python - PYQT5 QMainWindow setCentralWidget 由多个框布局组成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55692535/
我有不同的文件(main.py和layout.py),我想从文件layout.py更改QMainWindow的窗口(我已经缩短了它应该更改窗口大小的示例)。 它在 main.py 中工作正常,我可以从
这是我的类主窗口: MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { menu* v = new menu
对于编程类项目,我们需要开发一个应用程序,并且必须使用 PYQT5 作为 GUI。 我有一个基于 QMainWindow 的类。有几行代码我不太明白。下面是初始化: # Snippet 1 class
//clposter.h class CLPoster : public QMainWindow { Q_OBJECT public: CLPoster(); private slot
不确定我问这个问题是否正确,因为我是 C++ 和 Qt 的新手。但是,假设我有一个 QWidget 的子类: class childofqwidget : public QWidget 我可以将指向子
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { this->se
我正在尝试使用 QT Designer 创建 GUI。我已使用以下教程将我的 .ui 设计器文件转换为 .py 文件:http://pyqt.sourceforge.net/Docs/PyQt5/de
我仍在为我的数据库开发 GUI,现在我有一个不同的错误: Traceback (most recent call last): File "G:\Python\Database Kast Thui
我是一名优秀的程序员,十分优秀!