为了账号安全,请及时绑定邮箱和手机立即绑定

Python 使用 QGridLayout 不添加小部件

Python 使用 QGridLayout 不添加小部件

偶然的你 2022-12-06 16:45:29
我是 Qt5 的新手,我有一个简单的 QGridLayout 布局掩码。我想用调整窗口大小的小部件创建一个窗口这是代码import sysfrom PyQt5 import QtCore, QtGui, QtWidgetsfrom PyQt5.QtWidgets import QFileDialog ,QVBoxLayout,QGroupBox,QGridLayoutclass MainWindow(QtWidgets.QMainWindow, QtWidgets.QFileDialog, QtWidgets.QLineEdit):    def __init__(self):        super().__init__()        self.title = "Calcolo Hash"        self.top = 100        self.left = 100        self.width = 800        self.height = 330        self.InitWindow()    def InitWindow(self):        self.setWindowIcon(QtGui.QIcon("icona_aprie.png"))        self.setWindowTitle(self.title)        self.setGeometry(self.top, self.left, self.width, self.height)        self.creamaschera()        self.show()    def creamaschera(self):        print ("creazione maschera")        layout = QtWidgets.QGridLayout()        self.txtcartella = QtWidgets.QLineEdit()        self.lblprova = QtWidgets.QLabel("Please enter new name:")        # self.txtcartella.setGeometry(QtCore.QRect(10, 10, 301, 20))        # self.txtcartella.setObjectName("txtcartella")        layout.addWidget(self.lblprova,0,0)        layout.addWidget(self.txtcartella,0,1)        self.setLayout(layout)        # self.horizontalGroupBox.setLayout(layout)if __name__ == "__main__":    app = QtWidgets.QApplication(sys.argv)    w = MainWindow()    #w.show()    sys.exit(app.exec_())但是当我运行时,面具是空的。我用 Qt5 设计器制作基础并将其转换为 python。我想在最佳训练中重构课程。错误在哪里?
查看完整描述

1 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

您应该在小部件中设置布局,而不是将其设置为 MainWindow,因为您正在使用 MainWindow 类本身,并且在访问类 MainWindow 的方法和属性时,您可以更具体


import sys

from PyQt5 import QtCore, QtGui

from PyQt5.QtWidgets import (QLineEdit, QMainWindow, QWidget,

                             QGridLayout, QLabel, QApplication)



class MainWindow(QMainWindow):

    def __init__(self, *args, **kwargs):

        super(MainWindow, self).__init__(*args, **kwargs)

        self.title = "Calcolo Hash"

        self.top = 100

        self.left = 100

        self.width = 800

        self.height = 330

        self.InitWindow()

    def InitWindow(self):

        self.setWindowIcon(QtGui.QIcon("icona_aprie.png"))

        self.setWindowTitle(self.title)

        self.setGeometry(self.top, self.left, self.width, self.height)


        self.creamaschera()


    def creamaschera(self):

        print("creazione maschera")

        Layout = QGridLayout()

        self.txtcartella = QLineEdit()

        self.lblprova = QLabel("Enter Your Name")

        self.lblprova.setGeometry(QtCore.QRect(15, 15, 301, 20))

        self.txtcartella.setObjectName("txtcartella")

        Layout.addWidget(self.lblprova, 0, 0)

        Layout.addWidget(self.txtcartella, 0, 1)

        # Widget to setLayout in it since you are using MainWindow as an Class

        widget = QWidget()

        widget.setLayout(Layout)

        # SetCentralWidget without this widget won't be placed

        self.setCentralWidget(widget)

        # self.horizontalGroupBox.setLayout(layout)



if __name__ == "__main__":

    app = QApplication(sys.argv)

    MainWindow = MainWindow()

    MainWindow.show()

    sys.exit(app.exec_())


查看完整回答
反对 回复 2022-12-06
  • 1 回答
  • 0 关注
  • 136 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信