1.QMainWindow
QMainWindow 是应用程序框架 有自己的布局 也可以在布局中添加控件 比如工具栏菜单栏 状态栏等添加到布局管理器中
1.1窗口类型介绍
QMainWindow QWidget QDialog 这三个类都是用来创建窗口的 可以直接使用,也可以继承后再使用
QMainWindow 可以包含菜单栏 工具栏 状态栏 标题栏等 是最常见的窗口形式
QDialog 是对话窗口的基类。对话框主要用来执行短期任务,或者与用户进行互动,它可以是模态的 也可以是非模态的,QDialog 没有菜单栏 工具栏 状态栏等等
使用方面:
如果是主窗口 就是用QMainWindow 如果是对话窗,就使用QDialog类 如果不确定或者可能作为顶层窗口,也有可能嵌入到其他窗口中,那么就使用QWidget类
1.2创建主窗口
如果一个窗口包含一个或多个窗口,那么这个窗口就是父窗口,被包含的窗口就是子窗口。没有父窗口的窗口就是顶层窗口,QMainWindow就是一个顶层窗口,它可以包含很多界面元素。
在PyQt中 在主窗口 中会有一个空间占位符来占着中心窗口 可以使用setCentralWidget()来设置中心窗口
QMainWindow 继承自QWidget类 拥有它的所有派生方法和属性
其中比较重要的方法如
+ addToolBar() 添加工具栏
+ centralWidget() 返回窗口中心的一个控件 未设置时返回null
+ menuBar() 返回主窗口的菜单栏
+ setCentralWidget() 设置窗口中心控件
+ setStatusBar() 设置状态栏
+ statusBar() 获得状态栏对象后,调用状态栏对象的showMessage(message,int timeout=0)方法,显示状态栏信息你。其中第一个参数要显示的信息 第二个参数时信息停留的时间 单位是毫秒默认是0 表示一直显示状态栏信息。
from PyQt5.QtWidgets import QMainWindow,QApplication
from PyQt5.QtGui import QIcon
class MainWindow(QMainWindow):
def __init__(self,parent=None):
super(MainWindow,self).__init__(parent)
self.resize(400,200)
self.status = self.statusBar()
self.status.showMessage("这个时状态栏的显示时间是5000",5000)
self.setWindowTitle("PyQt MainWindow例子")
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
app.setWindowIcon(QIcon("./images/b822566318.ico"))
mywin = MainWindow()
mywin.show()
sys.exit(app.exec_())
下面是窗口放在桌面中心的位置
from PyQt5.QtWidgets import QMainWindow,QApplication,QDesktopWidget
import sys
class winform(QMainWindow):
def __init__(self,parent=None):
super(winform,self).__init__(parent)
self.setWindowTitle("主窗口放在屏幕中间例子")
self.resize(270,270)
self.center()
def center(self):
screen = QDesktopWidget().screenGeometry() #获取屏幕的大小
size = self.geometry()#获取窗口的大小
self.move((screen.width()-size.width())/2,(screen.height()-size.height())/2)#移动到指定位置
if __name__ == "__main__":
app = QApplication(sys.argv)
win = winform()
win.show()
sys.exit(app.exec_())
下面是关闭装主窗口的例子
from PyQt5.QtWidgets import QMainWindow,QApplication,QWidget,QHBoxLayout,QPushButton
import sys
class WinForm(QMainWindow):
def __init__(self,parent=None):
super(WinForm,self).__init__(parent)
self.setWindowTitle("关闭主窗口的例子")
self.button = QPushButton("关闭窗口按钮")
self.button.clicked.connect(self.onButtonClick)
layout = QHBoxLayout()
layout.addWidget(self.button)
main_frame = QWidget()
main_frame.setLayout(layout)
self.setCentralWidget(main_frame)
def onButtonClick(self):
sender = self.sender()#发送信号的对象
print(sender.text()+"被按下了")
qApp = QApplication.instance()
qApp.quit()
if __name__ == "__main__":
app = QApplication(sys.argv)
form = WinForm()
form.show()
sys.exit(app.exec_())
2 QWidget
基础窗口控件QWidget类是所有用户界面对象的积累,所有的窗口和空间都直接或间接继承自QWidget类
窗口控件(Widget 简称控件)是在PyQt中建立界面的主要元素。在PyQt中没有嵌入到其他控件中的控件为窗口一般窗口都有边框 标题栏。窗口是指程序的整体界面,可以包含标题栏 菜单栏 工具栏 关闭按钮 最小化按钮 最大化按钮等;控件是指按钮 复选框 文本框 表格 进度条等这些组成的基本元素。一个程序可以有多个窗口,一个窗口也可以有多个控件。
2.1窗口坐标系统
PyQt使用同一的坐标系统来定位窗口控件的位置和大小。如下图所示。
原文地址:https://www.cnblogs.com/simp/p/12302044.html
时间: 2024-10-03 21:41:25