QMainWindow類中有什麼東西不會允許正確放置一個QPushButton我想要它嗎?問題與QTextEdit,QPushButton一個與QMainWindow和另一個與QWidget一起工作
這裏的QPushButton「退出」是在錯誤的地方,比平常有點大。
我的代碼是
import sys
from PyQt5.QtWidgets import (QApplication , QPushButton, QToolTip, QMessageBox, QMainWindow, QAction,
QHBoxLayout, QVBoxLayout, QWidget, QTextEdit)
from PyQt5.QtGui import QIcon, QFont
class QQtWidget(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
btn = QPushButton("Quit", self)
btn.clicked.connect(self.close)
hbox = QHBoxLayout()
hbox.addStretch(1)
hbox.addWidget(btn)
vbox = QVBoxLayout()
vbox.addStretch(1)
vbox.addLayout(hbox)
self.setLayout(vbox)
self.setGeometry(500, 500, 300, 150)
self.setWindowTitle("PyQt Test")
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
f = DemoQt()
sys.exit(app.exec())
如果我讓從QWidget中的類繼承,而不是QMainWindow的按鈕將被妥善安置,但如果我繼承我不能使用一些其他的功能QWidget的。
另一個問題是QTextEdit模塊。看來,如果我用這個代碼在這裏
class OpenSavePath(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.textEdit = QTextEdit()
"I realise here that this might be the problem as there is no
setCentralWidget() module in QWidget"""
#self.setCentralWidget(self.textEdit)
save_btn = QPushButton("Save", self)
save_btn.clicked.connect(self.saveCSV)
hbox = QHBoxLayout()
hbox.addStretch(1)
hbox.addWidget(save_btn)
vbox = QVBoxLayout()
vbox.addStretch(1)
vbox.addLayout(hbox)
self.setGeometry(300, 300, 300, 250)
self.setWindowTitle("Rocket Packet Preview")
注意的QPushbutton,這也是錯位的,我不能編輯任何
它。通過改變父類QWidget的用的QMainWindow和添加此以下行
self.setCentralWidget(self.textEdit)
文本編輯器的問題消失了,我可以編輯。但是然後我的QPushButton出現。無論如何要解決這個問題嗎?
真棒!謝謝您的幫助。我也很好奇,爲什麼你有時會添加自例如 'VBOX = QVboxLayout(個體經營)' ,但不包括自行在 '橫向盒= QHLayout()' 還什麼是「微件」,在'超級(Widget,self)'? – Hawoona
'layout = {layout class}({parent})'類似於{parent} .setLayout(layout)' – eyllanesc
當你繼承時,你必須初始化父親所做的事情。 '超級(class .__ name__,self).__ init __(* args,** kwargs)' – eyllanesc