在使用Qt Designer 设计界面的时候,froms类型有三种:Main Window(默认)、Widget、Dialog,对应的类分别是:QMainWindow、QWidget、QDialog,可以直接使用,也可以继承后使用。
注意:QMainWindow有自己的布局,要使用setLayout()方法完成布局。
下面分别以三个实例来演示一下三类窗口的创建与使用。
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
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
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 条评论) “” |