在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Python  網(wǎng)絡(luò)安全/ python Pyqt 控件寫(xiě)成一個(gè)類(lèi),怎么放進(jìn)到QMainwindow中?

python Pyqt 控件寫(xiě)成一個(gè)類(lèi),怎么放進(jìn)到QMainwindow中?

coding: utf-8

現(xiàn)在分別是兩個(gè)窗口,如何把GripLayout2窗口整體嵌入到Mainwindows類(lèi)中,顯示一個(gè)界面?

import sys
from PyQt4 import QtGui
from PyQt4.QtGui import *

class Mainwindows(QMainWindow):
    def __init__(self):
        super(Mainwindows, self).__init__()
        self.resize(1024,768)

class GripLayout2(QtGui.QWidget):
    def __init__(self):
        super(GripLayout2, self).__init__()
        self.initUI()
    def initUI(self):
        title = QtGui.QLabel('Title')
        author = QtGui.QLabel('Author')
        review = QtGui.QLabel('Review')
        titleEdit = QtGui.QLineEdit()
        authorEdit = QtGui.QLineEdit()
        reviewEdit = QtGui.QTextEdit()
        grid = QtGui.QGridLayout()
        grid.setSpacing(10)
        grid.addWidget(title, 1, 0)
        grid.addWidget(titleEdit, 1, 1)
        grid.addWidget(author, 2, 0)
        grid.addWidget(authorEdit, 2, 1)
        grid.addWidget(review, 3, 0)
        grid.addWidget(reviewEdit, 3, 1, 5, 1)
        self.setLayout(grid)
        self.setWindowTitle('grid layout')
        self.resize(350, 300)

app = QtGui.QApplication(sys.argv)
ui = Mainwindows()
ui.show()
ex = GripLayout2()
ex.show()
sys.exit(app.exec_())
回答
編輯回答
貓小柒

思路是:在 QMainWindow 里面創(chuàng)建一個(gè) layout,然后把 GridLayout2 窗口加入 layout 里面(這個(gè)思路有點(diǎn)問(wèn)題,我記錯(cuò)了)

在 PyQt4 里面,QMainWindow 自己本來(lái)已經(jīng)有一個(gè) layout 了,你只需要調(diào)用 setCentralWidget 給 QMainWindow 指定一個(gè) widget 就好了。

題外話:建議用 PyQt5 + python3 來(lái)做練習(xí)。PyQt4 已經(jīng)過(guò)去好久了,5 的資源應(yīng)該更多一點(diǎn)。

代碼如下:

import sys
from PyQt4 import QtGui
from PyQt4.QtGui import *


class GripLayout2(QtGui.QWidget):
    def __init__(self, parent=None):
        super(GripLayout2, self).__init__(parent)
        self.initUI()


    def initUI(self):
        title = QtGui.QLabel('Title')
        author = QtGui.QLabel('Author')
        review = QtGui.QLabel('Review')
        titleEdit = QtGui.QLineEdit()
        authorEdit = QtGui.QLineEdit()
        reviewEdit = QtGui.QTextEdit()
        grid = QtGui.QGridLayout()
        grid.setSpacing(10)
        grid.addWidget(title, 1, 0)
        grid.addWidget(titleEdit, 1, 1)
        grid.addWidget(author, 2, 0)
        grid.addWidget(authorEdit, 2, 1)
        grid.addWidget(review, 3, 0)
        grid.addWidget(reviewEdit, 3, 1, 5, 1)
        self.setLayout(grid)
        self.setWindowTitle('grid layout')
        self.resize(350, 300)


class Mainwindows(QMainWindow):
    def __init__(self):
        super(Mainwindows, self).__init__()
        self.resize(1024,768)

        self.subwidget = GripLayout2(self)
        self.setCentralWidget(self.subwidget)


app = QtGui.QApplication(sys.argv)
ui = Mainwindows()
ui.show()
sys.exit(app.exec_())
        
2018年4月6日 17:57