PyQt5【入门-窗口】

一.窗口

#设置窗口标题
 setWindowTitle("标题")

#设置窗口坐标和大小
setGeometry(0,0,800,600)
 1 """
 2 项目模块: PyQt5
 3 项目内容:窗口
 4 
 5 """
 6 #导入系统参数
 7 import sys
 8 
 9 #导入PyQt5
10 from PyQt5.QtGui import *
11 from PyQt5.QtWidgets import *
12 
13 
14 #定义类
15 class MyWidget(QWidget):
16 
17     def __init__(self):     #类的初始化
18 
19         super().__init__()  #super()继承
20 
21         self.setGeometry(0,0,800,600)  #设置坐标: 0 0 大小800 600
22 
23         self.setWindowTitle('窗口标题')
24 
25 
26 #类的实例化
27 myapp = QApplication(sys.argv)
28 
29 mywidget = MyWidget()
30 
31 mywidget.show()
32 
33 sys.exit(myapp.exec_())
34 
35 
36         
View Code

二.界面加上图标

 1 """
 2 项目模块: PyQt5
 3 项目内容:窗口
 4 
 5 """
 6 #导入系统参数
 7 import sys
 8 
 9 #导入PyQt5
10 from PyQt5.QtGui import *
11 from PyQt5.QtWidgets import *
12 
13 
14 #定义类
15 class MyWidget(QWidget):
16 
17     def __init__(self):     #类的初始化
18 
19         super().__init__()  #super()继承
20 
21         self.setGeometry(0,0,800,600)  #设置坐标: 0 0 大小800 600
22 
23         self.setWindowTitle('窗口标题')
24 
25         self.setWindowIcon(QIcon('i.ico'))  #添加图标
26 
27 
28 #类的实例化
29 myapp = QApplication(sys.argv)
30 
31 mywidget = MyWidget()
32 
33 mywidget.show()
34 
35 sys.exit(myapp.exec_())
36 
37 
38         
View Code

三.弹出提示信息

 1 """
 2 项目模块: PyQt5
 3 项目内容:窗口
 4 
 5 """
 6 #导入系统参数
 7 import sys
 8 
 9 #导入PyQt5
10 from PyQt5.QtGui import *
11 from PyQt5.QtWidgets import *
12 
13 
14 #定义类
15 class MyWidget(QWidget):
16 
17     def __init__(self):     #类的初始化
18 
19         super().__init__()  #super()继承
20 
21         self.setGeometry(0,0,800,600)  #设置坐标: 0 0 大小800 600
22 
23         self.setWindowTitle('窗口标题')
24 
25         self.setWindowIcon(QIcon('i.ico'))
26         
27         #设置提示信息
28         self.setToolTip("这是提示!!")
29 
30         QToolTip.setFont(QFont('微软雅黑',10))
31 
32 
33 #类的实例化
34 myapp = QApplication(sys.argv)
35 
36 mywidget = MyWidget()
37 
38 mywidget.show()
39 
40 sys.exit(myapp.exec_())
41 
42 
43         
View Code

四.关闭窗口询问

 1 """
 2 项目模块: PyQt5
 3 项目内容:窗口
 4 
 5 """
 6 #导入系统参数
 7 import sys
 8 
 9 #导入PyQt5
10 from PyQt5.QtGui import *
11 from PyQt5.QtWidgets import *
12 
13 
14 #定义类
15 class MyWidget(QWidget):
16 
17     def __init__(self):     #类的初始化
18 
19         super().__init__()  #super()继承
20 
21         self.setGeometry(0,0,800,600)  #设置坐标: 0 0 大小800 600
22 
23         self.setWindowTitle('窗口标题')
24 
25         self.setWindowIcon(QIcon('i.ico'))
26         
27     def closeEvent(self,event):  
28 
29         #重新定义 closeEvent
30 
31         replay = QMessageBox.question(self,'关闭',
32                                       "你确定要退出么?",
33                                       QMessageBox.Yes,
34                                       QMessageBox.No)
35         if replay == QMessageBox.Yes:
36 
37             event.accept()
38         else:
39             event.ignore()
40         
41 
42 
43 #类的实例化
44 myapp = QApplication(sys.argv)
45 
46 mywidget = MyWidget()
47 
48 mywidget.show()
49 
50 sys.exit(myapp.exec_())
51 
52 
53         
View Code

五.屏幕居中显示

 1 """
 2 项目模块: PyQt5
 3 项目内容:窗口
 4 
 5 """
 6 #导入系统参数
 7 import sys
 8 
 9 #导入PyQt5
10 from PyQt5.QtGui import *
11 from PyQt5.QtWidgets import *
12 
13 
14 #定义类
15 class MyWidget(QWidget):
16 
17     def __init__(self):     #类的初始化
18 
19         super().__init__()  #super()继承
20 
21         self.setGeometry(0,0,800,600)  #设置坐标: 0 0 大小800 600
22 
23         self.resize(200,200)
24 
25         self.setWindowTitle('窗口标题')
26 
27         self.setWindowIcon(QIcon('i.ico'))
28 
29         self.center()
30         
31     def closeEvent(self,event):
32 
33         #重新定义 closeEvent
34 
35         replay = QMessageBox.question(self,'关闭',
36                                       "你确定要退出么?",
37                                       QMessageBox.Yes,
38                                       QMessageBox.No)
39         if replay == QMessageBox.Yes:
40 
41             event.accept()
42         else:
43             event.ignore()
44 
45     def center(self):
46 
47         #获取屏幕的大小
48         screen = QDesktopWidget().screenGeometry()
49         #自身的大小(包括宽和高)
50         size = self.geometry()
51         self.move((screen.width() - size.width())/2,
52                   (screen.height() - size.height())/2)
53         
54         
55         
56         
57 
58 
59 #类的实例化
60 myapp = QApplication(sys.argv)
61 
62 mywidget = MyWidget()
63 
64 mywidget.show()
65 
66 sys.exit(myapp.exec_())
67 
68 
69         
View Code

六.状态栏

 1 """
 2 项目模块: PyQt5
 3 项目内容:窗口
 4 
 5 """
 6 #导入系统参数
 7 import sys
 8 
 9 #导入PyQt5
10 from PyQt5.QtGui import *
11 from PyQt5.QtWidgets import *
12 
13 
14 #定义类
15 class MyWidget(QMainWindow):
16 
17     def __init__(self):     #类的初始化
18 
19         super().__init__()  #super()继承
20 
21         self.setGeometry(0,0,800,600)  #设置坐标: 0 0 大小800 600
22 
23         self.resize(300,300)
24 
25         self.setWindowTitle('窗口标题')
26 
27         self.setWindowIcon(QIcon('i.ico'))
28 
29         self.center()
30 
31         self.status_bar()
32         
33     def closeEvent(self,event):
34 
35         #重新定义 closeEvent
36 
37         replay = QMessageBox.question(self,'关闭',
38                                       "你确定要退出么?",
39                                       QMessageBox.Yes,
40                                       QMessageBox.No)
41         if replay == QMessageBox.Yes:
42 
43             event.accept()
44         else:
45             event.ignore()
46 
47     def center(self):
48 
49         #获取屏幕的大小
50         screen = QDesktopWidget().screenGeometry()
51         #自身的大小(包括宽和高)
52         size = self.geometry()
53         self.move((screen.width() - size.width())/2,
54                   (screen.height() - size.height())/2)
55         
56         
57         
58     def status_bar(self):
59 
60         self.statusBar().showMessage("程序已准备就绪...")
61 
62 
63 #类的实例化
64 myapp = QApplication(sys.argv)
65 
66 mywidget = MyWidget()
67 
68 mywidget.show()
69 
70 sys.exit(myapp.exec_())
71 
72 
73         
View Code

七.菜单栏

  1 """
  2 项目模块: PyQt5
  3 项目内容:窗口
  4 
  5 """
  6 #导入系统参数
  7 import sys
  8 
  9 #导入PyQt5
 10 from PyQt5.QtGui import *
 11 from PyQt5.QtWidgets import *
 12 
 13 
 14 #定义类
 15 class MyWidget(QMainWindow):
 16 
 17     valueA = "about"
 18     valueB = "aboutqt"
 19 
 20     def __init__(self):     #类的初始化
 21 
 22         super().__init__()  #super()继承
 23 
 24         self.initUI()
 25 
 26 
 27 
 28     def initUI(self):
 29         self.setGeometry(0,0,800,600)  #设置坐标: 0 0 大小800 600
 30 
 31         self.resize(300,300)
 32 
 33         self.setWindowTitle('窗口标题')
 34 
 35         self.setWindowIcon(QIcon('i.ico'))
 36 
 37         self.center()
 38 
 39         self.menu_bar()
 40 
 41     def menu_bar(self):
 42 
 43         #=================编程语言=========================
 44         lauguage_machine = self.menuBar().addMenu("编程语言")
 45         lauguage_C = lauguage_machine.addAction("C/C++")
 46         lauguage_Python = lauguage_machine.addAction("Python")
 47         lauguage_C# = lauguage_machine.addMenu("C#")
 48         lauguage_PHP = lauguage_machine.addAction("PHP")
 49         lauguage_SQL = lauguage_machine.addMenu("SQL")
 50         #SQL添加分支
 51         relative_SQL = lauguage_SQL.addMenu("关系型数据库")
 52         NoSQL = lauguage_SQL.addMenu("非关系型数据库")
 53         #关系型数据库
 54         SQL_Oracle = relative_SQL.addAction("Oracle")
 55         SQL_DB2 = relative_SQL.addAction("DB2")
 56         SQL_MySQL = relative_SQL.addAction("MySQL")
 57         SQL_Access = relative_SQL.addAction("Access")
 58         SQL_Server = relative_SQL.addAction("SQL Server")
 59         SQL_Sybase = relative_SQL.addAction("Sybase")
 60         SQL_vft = relative_SQL.addAction("vfp")
 61         SQL_INGRES = relative_SQL.addAction("INGRES")        
 62         #非关系型数据库
 63         SQL_SQL = NoSQL.addAction("SQL")
 64         SQL_Redis = NoSQL.addAction("Redis")
 65         SQL_MongoDB = NoSQL.addAction("MongoDB")
 66         SQL_SQLite = NoSQL.addAction("SQLite")        
 67         #网页
 68         lauguag_Web = lauguage_machine.addMenu("网页")
 69         lauguag_HTML = lauguag_Web.addAction("HTML")
 70         lauguag_CSS = lauguag_Web.addAction("CSS")
 71         lauguag_JavaScript = lauguag_Web.addAction("JavaScript")
 72 
 73         
 74         #=================爬虫=========================
 75         menu_control = self.menuBar().addMenu('爬虫')
 76 
 77         act_quit = menu_control.addAction('quit')
 78 
 79         act_quit.triggered.connect(self.close)
 80 
 81         #==================Web===================
 82         menu_help = self.menuBar().addMenu('Web')
 83 
 84         act_about = menu_help.addAction('about')
 85 
 86         act_about.triggered.connect(self.status)
 87 
 88         act_aboutqt = menu_help.addAction('aboutqt')
 89 
 90         act_aboutqt.triggered.connect(self.status_bar)
 91 
 92         
 93         
 94     def closeEvent(self,event):
 95 
 96         #重新定义 closeEvent
 97 
 98         replay = QMessageBox.question(self,'关闭',
 99                                       "你确定要退出么?",
100                                       QMessageBox.Yes,
101                                       QMessageBox.No)
102         if replay == QMessageBox.Yes:
103 
104             event.accept()
105         else:
106             event.ignore()
107 
108     def center(self):
109 
110         #获取屏幕的大小
111         screen = QDesktopWidget().screenGeometry()
112         #自身的大小(包括宽和高)
113         size = self.geometry()
114         self.move((screen.width() - size.width())/2,
115                   (screen.height() - size.height())/2)
116         
117         
118         
119     def status_bar(self):
120 
121         self.statusBar().showMessage("打开")
122 
123     def status(self):
124 
125         self.statusBar().showMessage("关闭")
126 
127 
128 #类的实例化
129 myapp = QApplication(sys.argv)
130 
131 mywidget = MyWidget()
132 
133 mywidget.show()
134 
135 sys.exit(myapp.exec_())
136 
137 
138         
View Code

 小项目

"""
QtWidget:

    QDialog:
      对话框

    QLabel:
      文本标签

    QLineEdit:
       单行文本输入框

    QCheckBox:
       文本标签的复选框

    QPushButton:
       按钮

    QHBoxLayout:
       布局管理器

    QVBoxLayout:
       布局管理器

    QApplication:
      QApplication类管理GUI程序的控制流和主要设置

QtCore:

    pyqtSignal:
      pyqtSignal()方法定义新的信号,新的信号作为类的属性

    QObject:
      所有Qt对象的基类,是Qt对象模型的核心,这个模型的主要特征为信号与槽
      
    pyqtSlot:
      @PyQt5.QtCore.pyqtSlot(参数)
      def on_发送者对象名称_发射信号名称(self, 参数):
             pass

 
"""


from PyQt5.QtWidgets import QDialog,QLabel,QLineEdit,QCheckBox,QPushButton,
                            QHBoxLayout,QVBoxLayout,QApplication

from PyQt5.QtCore import Qt,pyqtSignal,QObject,pyqtSlot


#FindDialog类继承QDialog对话框
class FindDialog(QDialog):

    """
   两个类变量:
      findNext:
      findPrevious:



    """
    #设置信号,没有设置name,信号名为findNext
    findNext = pyqtSignal(str,Qt.CaseSensitivity)

    findPrevious = pyqtSignal(str,Qt.CaseSensitivity)

    #初始化
    def __init__(self,parent=None):
        
        #继承父类的初始化
        super().__init__(parent)

        #标签Find what
        label = QLabel(self.tr("Find & what"))

        #单行文本输入框
        self.lineEdit = QLineEdit()

        #绑定伙伴,快捷键Alt + w焦点
        label.setBuddy(self.lineEdit)

        #文本标签的复选框
        self.caseCheckBox = QCheckBox(self.tr("Match"))

        #文本标签的复选框
        self.backwardCheckBox = QCheckBox(self.tr("Search &backward"))

        #Find按钮
        self.findButton = QPushButton(self.tr("&Find"))

        #设置按钮的默认状态
        self.findButton.setDefault(False)
        
        #按钮设置是否可点击
        self.findButton.setEnabled(False)

        
        #close按钮
        closeButton = QPushButton(self.tr("Close"))

        #文本框的文字改变执行enableFindButton()函数
        self.lineEdit.textChanged.connect(self.enableFindButton)
        
        #find按钮点击执行findClicked函数
        self.findButton.clicked.connect(self.findClicked)

        #close按钮点击执行关闭函数
        closeButton.clicked.connect(self.close)

        topLeftLayout = QHBoxLayout()

        topLeftLayout.addWidget(label)

        topLeftLayout.addWidget(self.lineEdit)

        leftLayout = QVBoxLayout()

        leftLayout.addLayout(topLeftLayout)

        leftLayout.addWidget(self.caseCheckBox)

        leftLayout.addWidget(self.backwardCheckBox)

        rightLayout = QVBoxLayout()

        rightLayout.addWidget(self.findButton)

        rightLayout.addWidget(closeButton)

        rightLayout.addStretch()

        mainLayout = QVBoxLayout()

        mainLayout.addLayout(leftLayout)

        mainLayout.addLayout(rightLayout)

        self.setLayout(mainLayout)

        self.setWindowTitle(self.tr("Find"))

        self.setFixedHeight(self.sizeHint().height())

    
    #enableFindButton函数传入参数text
    def enableFindButton(self,text):

        #Find按钮设置成是否可以点击
        self.findButton.setEnabled(bool(text))

        
    #装饰器
    @pyqtSlot()    
    #findClicked,
    def findClicked(self):

        #获取文本框的内容
        text = self.lineEdit.text()

        #如果复选框的Match是√
        if self.caseCheckBox.isChecked():

            cs = Qt.CaseSensitive

        else:
            cs = Qt.CaseInsensitive

        #如果复选框search background√
        if self.backwardCheckBox.isChecked():
            
            #发射名为findPrevious信号,参数为(str,Qt.CaseSensitivity)
            self.findPrevious.emit(text,cs)

        else:

            self.findNext.emit(text,cs)


if __name__ == "__main__":

    import sys

    app = QApplication(sys.argv)
    
    #FindDialog对话框实例化
    findDialog = FindDialog()
    
    #定义两个函数,也就是信号槽
    def find(text,cs):

        print('find:',text,'cs',cs)

    def findp(text,cs):

        print('findp',text,'cs',cs)
        
    #findNext连接find函数
    findDialog.findNext.connect(find)

    ##findPrevious连接findp函数
    findDialog.findPrevious.connect(findp)

    #对话框显示
    findDialog.show()

    #执行退出
    sys.exit(app.exec_())
        

 

                                                                                                                                                                                                                   

M54
原文地址:https://www.cnblogs.com/Crown-V/p/12330816.html