135.Python-PySide6:创建三种不同类型窗口

在使用Qt Designer 设计界面的时候,froms类型有三种:Main Window(默认)、Widget、Dialog,对应的类分别是:QMainWindow、QWidget、QDialog,可以直接使用,也可以继承后使用。

  • QMainWindow就是我们常见的窗口形式,包含菜单栏、工具栏、状态栏、标题栏等。
  • QDialog是对话框窗口,没有菜单栏、工具栏、状态栏等。
  • QWidget,如果不清楚窗口类型,可以直接使用QWidget,QMainWidnow是继承自QWidget,所以QWidget是父类。

注意:QMainWindow有自己的布局,要使用setLayout()方法完成布局。

下面分别以三个实例来演示一下三类窗口的创建与使用。

一、QMainWindow类创建窗口

import  sysfrom PySide6 import QtCore, QtGui, QtWidgetsclass MainWindow(QtWidgets.QMainWindow):    def __init__(self):        super().__init__()        #self.setupUi()        #设置窗口大小和标题        self.setFixedSize(400, 300)        self.setWindowTitle("MainWindow")                #获取主屏幕大小        screen=QtGui.QGuiApplication.primaryScreen().geometry()        print(screen.width(),screen.height())                                      self.status=self.statusBar()        self.status.showMessage("这是一个状态栏",50000)                self.btn=QtWidgets.QPushButton("确定")        self.btn.clicked.connect(self.close)        self.textedit=QtWidgets.QTextEdit()        self.textedit.setText("这个是MainWindow的文本框")                layout=QtWidgets.QVBoxLayout(self)        layout.addWidget(self.btn)        layout.addWidget(self.textedit)                #注:MainWindow需要用setLayout来设置布局        mainFrame=QtWidgets.QWidget()        mainFrame.setLayout(layout)         self.setCentralWidget(mainFrame)               if __name__ == '__main__':    app=QtWidgets.QApplication(sys.argv)    mywin=MainWindow()    mywin.show()    sys.exit(app.exec())    

QMainWindow

二、QWidgets类创建窗口

import  sysfrom PySide6 import QtCore, QtGui, QtWidgetsclass MainWindow(QtWidgets.QWidget):    def __init__(self):        super().__init__()        #self.setupUi()        #设置窗口大小和标题        self.setFixedSize(400, 300)        self.setWindowTitle("Window")        self.setToolTip("这是一个窗口")  #汽泡提示                label=QtWidgets.QLabel("留言:")        lineEdit=QtWidgets.QLineEdit()        label.setBuddy(lineEdit)                btn=QtWidgets.QPushButton("提交")        btn.clicked.connect(self.save)                #注:layout的父窗口是self,即主窗口:QWidget        layout=QtWidgets.QHBoxLayout(self)        layout.addWidget(label)        layout.addWidget(lineEdit)        layout.addWidget(btn)            def save(self):        #打开文件保存对话框        fileName, filetype=QtWidgets.QFileDialog.getSaveFileName(self, "保存文件", ".", "文本文件(*.txt)")        QtWidgets.QMessageBox.information(self, "提示",fileName+":保存成功")if __name__ == '__main__':    app=QtWidgets.QApplication(sys.argv)    mywin=MainWindow()    mywin.show()    sys.exit(app.exec())    

QWidget

三、QDialog类创建窗口

import sys from PySide6 import QtCore, QtGui, QtWidgetsclass DialogWin(QtWidgets.QDialog):    def __init__(self) -> None:        super().__init__()        self.resize(400, 300)        self.setWindowTitle("DialogWin")               self.btn=QtWidgets.QPushButton("打开对话框")        self.btn.clicked.connect(self.btnClicked)            layout=QtWidgets.QVBoxLayout(self)        layout.addWidget(self.btn)           def btnClicked(self):         self.dlg=QtWidgets.QDialog(self) #父窗口是self,QDialog的         #对话框创建布局,添加一个按钮,点击按钮关闭对话框         btn2=QtWidgets.QPushButton("ok",self.dlg) #父窗口是self.dlg         self.dlg.resize(300,200)         layout2=QtWidgets.QVBoxLayout(self.dlg)         layout2.addWidget(btn2)         btn2.clicked.connect(self.dlgmsg)         self.dlg.setWindowTitle("对话框")         self.dlg.setWindowModality(QtCore.Qt.ApplicationModal)         self.dlg.exec()             def dlgmsg(self):        self.dlg.close()         if __name__ == '__main__':    app=QtWidgets.QApplication(sys.argv)    win=DialogWin()    win.show()    sys.exit(app.exec())

QDialog


这里的核心就是继承和类,也是面向对象编程需要掌握的概念。

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章