2021-02-22 11:23发布
用PyQt的Qt designer编出的界面py文件里的这个MainWindow和QMainWindow类以及Ui_MainWindow分别是什么,他们间有什么关系class Ui_MainWindo... 显示全部
用PyQt的Qt designer编出的界面py文件里的这个MainWindow和QMainWindow类以及Ui_MainWindow分别是什么,他们间有什么关系
class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(1088, 680) MainWindow.setFocusPolicy(QtCore.Qt.TabFocus)
在pyqt5中,mainwindow有属于自己的布局,我们无法使用setlayout直接对mainwindow进行直接布局,但是我们可以将一个布局好的widget放置在mianwindow中的布局里,从而达到用setlayout布局widget后在布局到mianwindow中, 本实例采用QFormLayout+QVBoxLayout+QGridLayout将label,lineEdit和textEdit布局到一个widget中,最后将widget布局到mainwindow的中心布局里,本文还添加了一个菜单栏,在linux出现了一小段插曲,没有加入setNativeMenuBar(False)这个方法时,linux下是不会显示出菜单栏,添加之后就全平台都能显示
importsys
fromPyQt5.QtGuiimportQIcon
fromPyQt5.QtWidgetsimport*
classMainWindow(QMainWindow):
def__init__(self,parent=None):
super(MainWindow,self).__init__(parent)
#窗体设置
self.setWindowTitle("关闭窗口")
#菜单动作
self.exitAct=QAction(QIcon('exit.png'),'&Exit',self)
self.exitAct.setShortcut('Ctrl+Q')
self.exitAct.setStatusTip("Exitapplication")
self.exitAct.triggered.connect(self.quitAction)
#菜单栏
self.menu=self.menuBar()
self.menu.setNativeMenuBar(False)
self.fileMenu=self.menu.addMenu('File')
self.fileMenu.addAction(self.exitAct)
#中心窗口嵌入widget布局
self.label1=QLabel('label1')
self.label2=QLabel('label2')
self.lineEdit1=QLineEdit()
self.lineEdit2=QLineEdit()
self.textEdit1=QTextEdit()
self.textEdit2=QTextEdit()
self.formlayout1=QFormLayout()
self.formlayout2=QFormLayout()
self.formlayout1.addRow(self.label1,self.lineEdit1)
self.formlayout2.addRow(self.label2,self.lineEdit2)
self.vbox1=QVBoxLayout()
self.vbox1.addLayout(self.formlayout1)
self.vbox1.addWidget(self.textEdit1)
self.vbox2=QVBoxLayout()
self.vbox2.addLayout(self.formlayout2)
self.vbox2.addWidget(self.textEdit2)
self.gridlayout=QGridLayout()
self.gridlayout.addItem(self.vbox1,0,0)
self.gridlayout.addItem(self.vbox2,0,1)
self.widGet=QWidget()
self.widGet.setLayout(self.gridlayout)
self.setCentralWidget(self.widGet)
self.center()
#窗口居中
defcenter(self):
self.size=QDesktopWidget().screenGeometry()
self.resize=self.geometry()
self.move((self.size.width()-self.resize.width())/2,(self.size.height()-self.resize.height())/2)
defquitAction(self):
QApplication.exit()
if__name__=="__main__":
app=QApplication(sys.argv)
mainWindow=MainWindow()
mainWindow.show()
sys.exit(app.exec_())
最多设置5个标签!
在pyqt5中,mainwindow有属于自己的布局,我们无法使用setlayout直接对mainwindow进行直接布局,但是我们可以将一个布局好的widget放置在mianwindow中的布局里,从而达到用setlayout布局widget后在布局到mianwindow中, 本实例采用QFormLayout+QVBoxLayout+QGridLayout将label,lineEdit和textEdit布局到一个widget中,最后将widget布局到mainwindow的中心布局里,本文还添加了一个菜单栏,在linux出现了一小段插曲,没有加入setNativeMenuBar(False)这个方法时,linux下是不会显示出菜单栏,添加之后就全平台都能显示
importsys
fromPyQt5.QtGuiimportQIcon
fromPyQt5.QtWidgetsimport*
classMainWindow(QMainWindow):
def__init__(self,parent=None):
super(MainWindow,self).__init__(parent)
#窗体设置
self.setWindowTitle("关闭窗口")
#菜单动作
self.exitAct=QAction(QIcon('exit.png'),'&Exit',self)
self.exitAct.setShortcut('Ctrl+Q')
self.exitAct.setStatusTip("Exitapplication")
self.exitAct.triggered.connect(self.quitAction)
#菜单栏
self.menu=self.menuBar()
self.menu.setNativeMenuBar(False)
self.fileMenu=self.menu.addMenu('File')
self.fileMenu.addAction(self.exitAct)
#中心窗口嵌入widget布局
self.label1=QLabel('label1')
self.label2=QLabel('label2')
self.lineEdit1=QLineEdit()
self.lineEdit2=QLineEdit()
self.textEdit1=QTextEdit()
self.textEdit2=QTextEdit()
self.formlayout1=QFormLayout()
self.formlayout2=QFormLayout()
self.formlayout1.addRow(self.label1,self.lineEdit1)
self.formlayout2.addRow(self.label2,self.lineEdit2)
self.vbox1=QVBoxLayout()
self.vbox1.addLayout(self.formlayout1)
self.vbox1.addWidget(self.textEdit1)
self.vbox2=QVBoxLayout()
self.vbox2.addLayout(self.formlayout2)
self.vbox2.addWidget(self.textEdit2)
self.gridlayout=QGridLayout()
self.gridlayout.addItem(self.vbox1,0,0)
self.gridlayout.addItem(self.vbox2,0,1)
self.widGet=QWidget()
self.widGet.setLayout(self.gridlayout)
self.setCentralWidget(self.widGet)
self.center()
#窗口居中
defcenter(self):
self.size=QDesktopWidget().screenGeometry()
self.resize=self.geometry()
self.move((self.size.width()-self.resize.width())/2,(self.size.height()-self.resize.height())/2)
defquitAction(self):
QApplication.exit()
if__name__=="__main__":
app=QApplication(sys.argv)
mainWindow=MainWindow()
mainWindow.show()
sys.exit(app.exec_())
一周热门 更多>