import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QHBoxLayout, QPushButton,QWidget
from PyQt5.QtGui import QIcon
# 从QMainWindow继承的类
class MainWindow(QMainWindow):
# 初始化
# parent=None 保证了MainWindow为主窗口
def __init__(self, parent=None):
# 调用父类
super(MainWindow,self).__init__(parent)
# 设置主窗口的标题
self.setWindowTitle('Window')
# 设置窗口的尺寸
self.resize(400,300)
# 添加QPushButton类控件
self.button = QPushButton('exit application')
# 将信号与槽关联
# 将对self.button控件的clicked鼠标单击事件和self.onClick_Button函数关联起来
# 也就是说,当鼠标点击按钮时,触发执行self.onClick_Button函数体的内容
self.button.clicked.connect(self.onClick_Button_quit)
# 创建水平布局
self.layout = QHBoxLayout()
# 将self.button控件放入水平布局中
self.layout.addWidget(self.button)
# QWidget类是所有的用户接口对象的基类
# 复合型的widget也可以是标准widget的一个子类,例如QWidget或者QFrame
# 然后在这个子类中添加必要的layout(布局)和子widget
self.mainFrame = QWidget()
# 将layout布局放入mainFrame中
self.mainFrame.setLayout(self.layout)
# 使mainFrame充满整个窗口
self.setCentralWidget(self.mainFrame)
def onClick_Button_quit(self):
# sender()的方法:
# objectName(),获取objectName
# text(),获取text
sender = self.sender()
print(' The \'' + sender.text() + '\' key is pressed')
# 获取app单例对象
# 这里是,获取当前对象
app = QApplication.instance()
# 退出程序
app.quit()
if __name__ == '__main__':
app = QApplication(sys.argv)
# 设置应用程序图标
# './img/icon.ico'为.ico图片的路径
app.setWindowIcon(QIcon('./img/icon.ico'))
win = MainWindow()
win.show()
sys.exit(app.exec_())