• 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
  • 相关阅读:
    gcc
    linux下的多线程,pthread_create函数
    Linux开启ssh服务
    Leaky Images: Targeted Privacy Attacks in the Web
    20199112 2019-2020-2 《网络攻防实践》第 10 周作业
    20199112 2019-2020-2 《网络攻防实践》第 9 周作业
    tinymce下载地址
    element-ui重要参考
    SpringCloud在线教育平台(重要--重要--重要--重要--重要--重要)
    在线教育项目(全)
  • 原文地址:https://www.cnblogs.com/Crown-V/p/12330816.html
Copyright © 2020-2023  润新知