# _*_ coding:utf-8 _*_ import sys from PyQt5.QtWidgets import (QApplication, QWidget, QVBoxLayout, QPushButton, QMainWindow) class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.init_ui() def init_ui(self): self.setWindowTitle(‘关闭主窗口‘) # 设置窗口标题 self.resize(600, 600) layout = QVBoxLayout() self.close_btn = QPushButton(‘关闭‘, self) layout.addWidget(self.close_btn) main_frame = QWidget() self.setCentralWidget(main_frame) main_frame.setLayout(layout) self.close_btn.clicked.connect(self.on_button_click) self.status = self.statusBar() self.status.showMessage(‘我是状态栏‘, 5000) def on_button_click(self): # 将信息显示在状态栏中 sender = self.sender() msg = sender.text() + " 被按下了" status = self.statusBar() status.showMessage(msg, 5000) #self.showMaximized() # 程序退出 app = QApplication.instance() app.quit() if __name__ == "__main__": app = QApplication(sys.argv[1:]) window = MainWindow() window.show() sys.exit(app.exec_())
===============================
import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import QColor, QFont, QIcon, QKeySequence from PyQt5.QtCore import Qt, QDate, QTime, QDateTime, QTimer from PyQt5.QtPrintSupport import QPrinter, QPrintDialog, QPrintPreviewDialog import os class MainWindow(QMainWindow): def __init__(self, parent=None): super().__init__(parent) self.initUI() def initUI(self): self.setWindowTitle("主窗口示例") # self.resize(400,250) self.setup_centralWidget() self.setup_dockWidget() self.setup_statusBar() self.createActions() self.setup_menuBar() self.setup_toolBar() def setup_centralWidget(self): # 设置主窗口中心部件 self.textEdit = QTextEdit() # 初始化时换行符无效 self.textEdit.setText("第一行\n第二行\n第三行\n") # self.textEdit.selectAll() self.setCentralWidget(self.textEdit) # 指定主窗口中心部件 def createActions(self): # 创建动作 # 打开文件动作 self.fileOpenAction = QAction(QIcon("open.png"), "&Open", self) # 动作在self中可用 self.fileOpenAction.setShortcut(QKeySequence.Open) # 设置标准化快捷键 # self.fileOpenAction.setShortcut("Ctrl+O")# windows 系统下等效于 self.fileOpenAction.setToolTip("打开文件") # 工具栏提示文本 self.fileOpenAction.setStatusTip("打开现有的文件") # 状态栏提示文本 self.fileOpenAction.triggered.connect(self.fileOpen) # 文件另存为动作 self.fileSaveAsAction = QAction(QIcon("save.png"), "SaveAs", self) # 动作在self中可用 self.fileSaveAsAction.setShortcut(QKeySequence.SaveAs) # 设置标准化快捷键 # windows 系统下无快捷键 self.fileSaveAsAction.setToolTip("另存为") # 工具栏提示文本 self.fileSaveAsAction.setStatusTip("文件另存为") # 状态栏提示文本 self.fileSaveAsAction.triggered.connect(self.fileSaveAs) # 动作分隔符 self.separator = QAction(self) self.separator.setSeparator(True) def setup_menuBar(self): # 文件菜单 self.fileMenu = self.menuBar().addMenu("&File") self.fileMenu.addAction(self.fileOpenAction) self.fileMenu.addAction(self.fileSaveAsAction) # self.fileMenu.addAction(self.separator) def fileOpen(self): fileName, filetype = QFileDialog.getOpenFileName(self, "打开文件", os.getcwd(), # 设定起始路径为当前目录 "Text Files (*.txt)") # 设置文件扩展名过滤,用双分号间隔 if fileName != "": with open(fileName) as f: self.textEdit.setText(f.read()) def fileSaveAs(self): fileName, filetype = QFileDialog.getSaveFileName(self, "文件另存为", os.getcwd(), # 起始路径 "Text Files (*.txt);;Html Files (*.html)") # 设置文件扩展名过滤,用双分号间隔 if fileName == "": return if filetype == "Text Files (*.txt)": with open(fileName, "w") as f: f.write(self.textEdit.toPlainText()) elif filetype == "Html Files (*.html)": with open(fileName, "w") as f: f.write(self.textEdit.toHtml()) def setup_toolBar(self): fileToolbar = self.addToolBar("File") # 添加工具条;可依次添加多个工具条 fileToolbar.addActions((self.fileOpenAction, self.fileSaveAsAction, self.separator)) # 添加动作 tb_label1 = QLabel("选择什么东东") self.cb = QComboBox() self.cb.addItems(("红", "绿", "蓝")) fileToolbar.addWidget(tb_label1) # 工具条添加部件 fileToolbar.addWidget(self.cb) # 工具条添加部件 # ...... def setup_dockWidget(self): # 设置停靠窗口 self.logDockWidget = QDockWidget("log", self) self.logDockWidget.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea) self.listWidget = QListWidget() self.logDockWidget.setWidget(self.listWidget) self.addDockWidget(Qt.RightDockWidgetArea, self.logDockWidget) # 添加停靠窗口 def setup_statusBar(self): # 配置状态栏 self.dateLabel = QLabel() self.dateLabel.setFrameStyle(QFrame.StyledPanel | QFrame.Sunken) self.dateLabel.setText(QDate.currentDate().toString()) self.timeLabel = QLabel() self.timeLabel.setFrameStyle(QFrame.StyledPanel | QFrame.Sunken) self.timeLabel.setText(QTime.currentTime().toString()) self.statusBar().addPermanentWidget(self.dateLabel) self.statusBar().addPermanentWidget(self.timeLabel) datetime = QDateTime.currentDateTime().toString() self.statusBar().showMessage(datetime, 3000) # 状态栏在3000ms内显示信息 self.statusBar().showMessage("ready") # 状态栏显示信息 timer = QTimer(self) # 创建计时器#self timer.timeout.connect(self.updateBySecond) # 计时器超时信号接到用于更新界面的槽 timer.start(1000) # 每1000ms发射超时信号 def updateBySecond(self): self.timeLabel.setText(QTime.currentTime().toString()) self.dateLabel.setText(QDate.currentDate().toString()) if __name__ == ‘__main__‘: app = QApplication(sys.argv) mw = MainWindow() mw.show() sys.exit(app.exec_()) #本文分享自微信公众号 - Python
原文:https://www.cnblogs.com/gisoracle/p/12285139.html