Python с использованием QGridLayout не добавлять виджет - PullRequest
0 голосов
/ 26 мая 2020

Я новичок в Qt5, у меня есть простая маска макета QGridLayout. Я хочу создать windows с изменением размера виджета с изменением размера окна

, это код

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QFileDialog ,QVBoxLayout,QGroupBox,QGridLayout

class 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 Ответ

0 голосов
/ 26 мая 2020

Вам следует установитьLayout в виджете, а не устанавливать его для MainWindow, поскольку вы используете сам класс MainWindow и при доступе к методам и свойствам класса MainWindow вы можете быть более конкретными c

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_())
...