QWidget::setLayout:尝试在已经有布局的窗口" "上设置 QLayout " "



正如标题所述,我在尝试将窗体布局设置为窗口时遇到了问题-我不确定"已经有布局"的确切含义,因为我没有显式调用setLayout,所以是否有一些默认布局应用于窗口?还是和我的超级电话有关?

搜索并没有给我一个合适的答案(至少对我的案子来说不是这样),所以我想我应该发个帖子。

import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
#Window class
class Window(QMainWindow):
    def __init__(self): # constructor for Window (passes "self" -aka Window- to __init__ to initialize it)
        super(Window, self).__init__() #inherits from QMainWindow
        self.setGeometry(50,50,800,600) #Set window dimensions
        self.setWindowTitle("Google Music Playlist Transfer") #Set window title
        self.setWindowIcon(QIcon('gmusic.png')) #Set window icon
        self.home()
    def home(self):     
        #Set email field
        email = QLineEdit()
        email.setMaxLength(110)
        email.setAlignment(Qt.AlignLeft)
        #Set password field
        pwd = QLineEdit()
        pwd.setAlignment(Qt.AlignLeft)
        pwd.setEchoMode(QLineEdit.Password)
        #Form layout
        layout = QFormLayout()
        layout.addRow("Email: ", email)
        layout.addRow("Password: ", pwd)
        #Login button
        login_btn = QPushButton("Login", self) #login button
        login_btn.clicked.connect(QCoreApplication.instance().quit) #tell button what to do
        login_btn.resize(100, 100)
        login_btn.move(100,100)
        self.setLayout(layout)
        self.show() #Show window

我为未来的路人解决了这个问题(虽然我不知道为什么会出现这个问题,也许有人可以在评论中对此进行扩展)-我继承了QWindow而不是QWidget,显然这会导致设置布局出现某种问题-同样,不确定为什么,但将其更改为QWidget确实解决了问题!

最新更新