python 按钮点击关闭窗口的实现


Posted in Python onMarch 04, 2020

1、简介

1)使用 python 创建主窗口

2)设置标题栏图标,文字

3)设置状态栏图标文字

4)将窗口移动到屏幕中间

2、功能实现

1) QtDesign 实现

就是 先画 ui 然后转python

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'untitled.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication

class Ui_MainWindow(object):
  def setupUi(self, MainWindow):
    MainWindow.setObjectName("MainWindow")
    MainWindow.resize(800, 600)                     # 设置窗口大小
    self.centralwidget = QtWidgets.QWidget(MainWindow)
    self.centralwidget.setObjectName("centralwidget")
    self.verticalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
    self.verticalLayoutWidget.setGeometry(QtCore.QRect(20, 20, 100, 60)) #设置 按钮位置大小
    self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
    self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
    self.verticalLayout.setContentsMargins(0, 0, 0, 0)
    self.verticalLayout.setObjectName("verticalLayout")
    self.pushButton = QtWidgets.QPushButton(self.verticalLayoutWidget)
    self.pushButton.setObjectName("pushButton")
    self.pushButton.clicked.connect(self.onButtonClick) #绑定按键点击事件
    self.verticalLayout.addWidget(self.pushButton)
    MainWindow.setCentralWidget(self.centralwidget)
    self.menubar = QtWidgets.QMenuBar(MainWindow)
    self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
    self.menubar.setObjectName("menubar")
    MainWindow.setMenuBar(self.menubar)
    self.statusbar = QtWidgets.QStatusBar(MainWindow)
    self.statusbar.setObjectName("statusbar")
    MainWindow.setStatusBar(self.statusbar)

    self.retranslateUi(MainWindow)
    QtCore.QMetaObject.connectSlotsByName(MainWindow)

  def retranslateUi(self, MainWindow):
    _translate = QtCore.QCoreApplication.translate
    MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
    self.pushButton.setText(_translate("MainWindow", "关闭窗口"))  # 设置按钮文字

  def onButtonClick(self):
    # sender 是发送信号的对象,此处发送信号的对象是button1按钮
    sender = self.sender()
    print(sender.text() + ' 被按下了')
    qApp = QApplication.instance()
    qApp.quit()    # 关闭窗口

if __name__ == '__main__':
  app = QtWidgets.QApplication(sys.argv)
  MainWindow = QtWidgets.QMainWindow()
  ui = Ui_MainWindow()
  ui.setupUi(MainWindow)
  MainWindow.show()
  sys.exit(app.exec_())

python 按钮点击关闭窗口的实现

可以设置 按钮位置和大小,但是速度有点慢

2)使用 python 直接写出来

速度快一些,但是还没有掌握怎么设置按钮大小和位置··

python 按钮点击关闭窗口的实现

# -*- coding: utf-8 -*- 

'''
  【简介】
	PyQT5中主窗口例子
'''

import sys
from PyQt5.QtWidgets import QMainWindow , QApplication, QDesktopWidget,QPushButton,QHBoxLayout,QWidget
from PyQt5.QtGui import QIcon


class MainWidget(QMainWindow):
	def __init__(self,parent=None):
		super(MainWidget,self).__init__(parent)
    # 设置主窗体标签
		self.setWindowTitle("QMainWindow 例子") #设置主窗口文字
		self.resize(400, 200)  #设置主窗口大小
		self.status = self.statusBar()  #获取主窗口状态栏
		self.status.showMessage("这是状态栏提示",5000) #设置主窗口状态栏文字
		self.center() # 调用将窗口设置中间函数

		self.button1 = QPushButton('关闭主窗口') 	 #实例化一个 按键
		self.button1.setStyleSheet("background-color: red")  # 设置按钮的风格和颜色
		self.button1.clicked.connect(self.onButtonClick) #绑定按键点击事件

		layout = QHBoxLayout()
		layout.addWidget(self.button1)

		main_frame = QWidget()
		main_frame.setLayout(layout)
		self.setCentralWidget(main_frame)

	def onButtonClick(self ):
    #sender 是发送信号的对象,此处发送信号的对象是button1按钮
		sender = self.sender()
		print( sender.text() + ' 被按下了' )
		qApp = QApplication.instance()
		qApp.quit()

	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)
	app.setWindowIcon(QIcon("./images/cartoon1.ico")) #设置主窗口的图标
	main = MainWidget() #获取主窗口对象
	main.show()
	sys.exit(app.exec_())
Python 相关文章推荐
python paramiko实现ssh远程访问的方法
Dec 03 Python
Python中用format函数格式化字符串的用法
Apr 08 Python
Python中的字符串切片(截取字符串)的详解
May 15 Python
python自动发邮件总结及实例说明【推荐】
May 31 Python
Python函数的定义方式与函数参数问题实例分析
Dec 26 Python
python中count函数简单的实例讲解
Feb 06 Python
Pytorch数据拼接与拆分操作实现图解
Apr 30 Python
PyCharm中配置PySide2的图文教程
Jun 18 Python
详解java调用python的几种用法(看这篇就够了)
Dec 10 Python
Jupyter Notebook 远程访问配置详解
Jan 11 Python
pytorch--之halfTensor的使用详解
May 24 Python
LeetCode189轮转数组python示例
Aug 05 Python
Tkinter中复选菜单是否被选中的判断与设置方式
Mar 04 #Python
python虚拟环境模块venv使用及示例
Mar 04 #Python
Python类的绑定方法和非绑定方法实例解析
Mar 04 #Python
python字符串常用方法及文件简单读写的操作方法
Mar 04 #Python
SpringBoot实现登录注册常见问题解决方案
Mar 04 #Python
Python读取文件内容为字符串的方法(多种方法详解)
Mar 04 #Python
python实现猜拳游戏
Mar 04 #Python
You might like
PHP随机生成随机个数的字母组合示例
2014/01/14 PHP
安装ImageMagick出现error while loading shared libraries的解决方法
2014/09/23 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
php 截取utf-8格式的字符串实例代码
2016/10/30 PHP
让ThinkPHP的模板引擎达到最佳效率的方法详解
2017/03/14 PHP
解析arp病毒背后利用的Javascript技术附解密方法
2007/08/06 Javascript
js调用flash的效果代码
2008/04/26 Javascript
实现png图片和png背景透明(支持多浏览器)的方法
2009/09/08 Javascript
jQuery 阴影插件代码分享
2012/01/09 Javascript
jQuery实现列表自动循环滚动鼠标悬停时停止滚动
2013/09/06 Javascript
兼容所有浏览器的js复制插件Zero使用介绍
2014/03/19 Javascript
在浏览器中打开或关闭JavaScript的方法
2015/06/03 Javascript
javascript简单实现类似QQ头像弹出效果的方法
2015/08/03 Javascript
jquery延迟对象解析
2016/10/26 Javascript
JS中实现函数return多个返回值的实例
2017/02/21 Javascript
详解vue 模版组件的三种用法
2017/07/21 Javascript
微信小程序中换行空格(多个空格)写法详解
2018/07/10 Javascript
详解Vue Elementui中的Tag与页面其它元素相互交互的两三事
2018/09/25 Javascript
vue的列表交错过渡实现代码示例
2019/05/05 Javascript
vue+moment实现倒计时效果
2019/08/26 Javascript
jQuery实现每日秒杀商品倒计时功能
2019/09/06 jQuery
解决vue的过渡动画无法正常实现问题
2019/10/31 Javascript
vue 对axios get pust put delete封装的实例代码
2020/01/05 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
2020/09/21 Javascript
[01:14]TI珍贵瞬间系列(六):冠军
2020/08/30 DOTA
python 字典中取值的两种方法小结
2018/08/02 Python
Python Django框架url反向解析实现动态生成对应的url链接示例
2019/10/18 Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
2020/02/15 Python
Python ORM框架Peewee用法详解
2020/04/29 Python
基于pycharm 项目和项目文件命名规则的介绍
2021/01/15 Python
德国婴儿推车和儿童安全座椅商店:BABYSHOP
2016/09/01 全球购物
领导干部对照检查材料
2014/08/24 职场文书
四年级数学上册教学计划
2015/01/20 职场文书
小学运动会入场口号
2015/12/24 职场文书
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL
Win11任务栏无法正常显示 资源管理器不停重启的解决方法
2022/07/07 数码科技