【发布时间】:2019-12-04 21:28:47
【问题描述】:
任务:
例如(下面的代码)我们创建 QHBoxLayout,其中有两个按钮。
import sys
from PyQt5.QtWidgets import (QWidget, QPushButton, QHBoxLayout, QApplication)
class Example(QWidget):
def __init__(self):
super().__init__()
hbox = QHBoxLayout()
okButton = QPushButton("OK")
cancelButton = QPushButton("Cancel")
hbox.addWidget(okButton)
hbox.addWidget(cancelButton)
self.setLayout(hbox)
self.setGeometry(100, 100, 500, 500)
self.show()
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
必要:
在主窗口设置hbox (QHBoxLayout) (W_pix, H_pix) 及其坐标(X_pos, Y_pos) 的大小(它们不适合,我在文档中没有找到这样的功能对于 QHBoxLayout、QWidget 的描述)。
v.2
import sys
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtCore import QRect
from PyQt5.QtWidgets import (QWidget, QPushButton,
QHBoxLayout, QApplication, QMainWindow, QVBoxLayout)
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.hbox = QVBoxLayout()
self.okButton = QPushButton("OK")
self.cancelButton = QPushButton("Cancel")
self.hbox.addWidget(self.okButton)
self.hbox.addWidget(self.cancelButton)
self.setGeometry(100, 100, 500, 500)
self.setLayout(self.hbox)
self.hbox.setGeometry(QtCore.QRect(200, 200, 300, 300))
self.show()
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
【问题讨论】:
-
你能显示输出截图吗?并解释代码在图像的帮助下究竟是如何工作的?
-
我可以看到可用于 QHBoxLayout doc.qt.io/qt-5/qboxlayout.html#setGeometry的几何图形
-
示例代码正在运行。问题是你不能改变大小和位置。也许:hbox.setGeometry(100, 100, 200, 200)? (但没用:TypeError: setGeometry(self, QRect): argument 1 has unexpected type 'int')
-
代码运行没有错误,如下所示:hbox.setGeometry (QtCore.QRect (200, 200, 300, 300)) 但大小 QHBoxLayout() 不会改变。
-
在上面显示的示例代码中,没有窗口,它是一个小部件。基本上,您已经为小部件设置了布局,并且正在显示小部件。更改小部件的几何形状并将该小部件放在窗口中。你可能会得到你想要的结果。