Appearance
PyQt生成窗口的方式
- 在Qt中,生成窗口有三种方式:QWidget、QMainWidget、QDialog
一、QWidget
- 控件和窗口的父类,自由度高(什么东西都没有),没有划分菜单、工具栏、状态栏、主窗口等区域
1. 使用示例
python
import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QLabel)
class MyWindow(QWidget):
def __init__(self):
super(MyWindow,self).__init__()
self.init_ui()
def init_ui(self):
self.setWindowTitle("QWidget窗口")
self.resize(400,300)
label = QLabel("这是QWidget窗口")
label.setStyleSheet("font-size:36px;color:gray")
label.setParent(self)
if __name__ == '__main__':
app = QApplication(sys.argv)
win = MyWindow()
win.show()
app.exec_()
2. 样式演示
二、QMainWidget
- 是QWidget的子类,包含菜单栏、工具栏、状态栏、标题栏等,中间部分则为主窗口区域
1. 使用示例
python
import sys
from PyQt5.QtWidgets import (QApplication, QLabel, QMainWindow)
class MyWindow(QMainWindow):
def __init__(self):
super(MyWindow,self).__init__()
self.init_ui()
def init_ui(self):
self.resize(400,300)
self.setWindowTitle("QMainWidget窗口")
label = QLabel("这是QMainWindow窗口")
label.setStyleSheet("font-size:36px;color:gray")
# 调用父类中的menuBar,从而对菜单栏进行操作
menu = self.menuBar()
# 如果是Mac的话,菜单不会在Window中显示而是在屏幕顶部系统菜单栏位置
# 下面一行代码使得Mac也按照Windows的那种方式在Window中显示菜单栏
menu.setNativeMenuBar(False)
file_menu = menu.addMenu("文件")
file_menu.addAction("新建")
file_menu.addAction("打开")
file_menu.addAction("保存")
edit_menu = menu.addMenu("编辑")
edit_menu.addAction("复制")
edit_menu.addAction("粘贴")
edit_menu.addAction("剪切")
# 设置中心内容显示
self.setCentralWidget(label)
if __name__ == '__main__':
app = QApplication(sys.argv)
win = MyWindow()
win.show()
app.exec_()
2. 样式演示
三、QDialog
- 对话框窗口的基类
1. 使用示例
python
import sys
from PyQt5.QtWidgets import (QApplication, QDialog, QPushButton)
class MyWindow(QDialog):
def __init__(self):
super(MyWindow,self).__init__()
self.init_ui()
def init_ui(self):
self.setWindowTitle("QDialog窗口")
self.resize(400,300)
btn_ok = QPushButton("确定",self)
btn_ok.setStyleSheet("background-color:pink;")
btn_ok.setGeometry(150,100,100,30)
if __name__ == '__main__':
app = QApplication(sys.argv)
win = MyWindow()
win.show()
app.exec_()