美文网首页
PyQt5学习笔记——基本窗口组件(1)

PyQt5学习笔记——基本窗口组件(1)

作者: SS小鱼干 | 来源:发表于2020-04-06 00:12 被阅读0次

    最近在看PyQt5方面的教材,简单整理汇总便于查阅;因为过于简略如果希望于深入的学习还是应该啃书本吧~

    1. QMainWindow 窗口可以包含菜单栏、工具栏、状态栏、标题栏等,是最常见的窗口形式,也可以说是GUI程序的主窗口
    2. QDialog 是对话框窗口的基类。对话框主要用来执行短期任务,或者与用户进行互动,它可以是模态的,也可以是非模态的。
    3. 如果是主窗口,就使用QMainWindow类;如果是对话框,就使用 QDialog类;如果不确定,或者有可能作为顶层窗口,也有可能嵌入到其他窗口中,那么就使用QWidget类。

    QMainWindow

    QMainWindow继承自QWidget类,拥有它的所有派生方法和属性。

    常用方法

    image

    QMainWindow不能设置布局(使用setLayout()方法),因为它有自己的布局。


    QWidget

    基础窗口控件QWidget类是所有用户界面对象的基类,所有的窗口和控件都直接或间接继承自QWidget类。

    坐标系统

    image
    • 整个屏幕的坐标系统就用来定位顶层窗口的
    • 在窗口内部也有自己的坐标系统,该坐标系统仍然以左上角作为原点,从左向右为x轴正向,从上向下为y轴正向,原点、x轴、y轴围成的区域叫作Client Area(客户区),在客户区的周围则是标题栏(Window Title)和边框(Frame)。

    最简单的窗口

    import sys
    from PyQt5.QtWidgets import QApplication,QWidget
    app=QApplication(sys.argv) # 每一个 PyQt5 程序都需要有一个 QApplication 对象,QApplication 类包含在QTWidgets模块中。sys.argv 是一个命令行参数列表。
    window=QWidget()
    window.resize(300,200)
    window.move(250,150)
    window.setWindowTitle('Hello PyQt5')
    window.show() # 使用show()方法将窗口控件显示在屏幕上。
    sys.exit(app.exec_()) # 最后进入该程序的主循环。事件处理从本行代码开始,主循环接收事件消息并将其分发给程序的各个控件。
    
    • 窗口和控件都继承自QWidget类,如果不为控件指定一个父对象,那么该控件就会被当作窗口处理
    • 如果调用 exit()或主控件被销毁,主循环就会结束。使用 sys.exit()方法退出可以确保程序完整地结束,在这种情况下系统的环境变量会记录程序是如何退出的。
    • 如果程序运行成功,那么exec_()的返回值为0,否则为非0。

    QLabel

    QLabel对象作为一个占位符可以显示不可编辑的文本或图片,也可以放置一个GIF 动画,还可以被用作提示标记为其他控件。纯文本、链接或富文本可以显示在标签上。

    继承关系

    image

    常用方法 image

    常用信号 image

    使用QLabel

    from PyQt5.QtWidgets import QApplication,  QLabel  ,QWidget, QVBoxLayout 
    from PyQt5.QtCore import Qt 
    from PyQt5.QtGui import QPixmap ,QPalette
    import sys  
        
    class WindowDemo(QWidget):  
        def __init__(self ):  
            super().__init__()
                    
            label1 = QLabel(self)
            label2 = QLabel(self)
            label3 = QLabel(self)
            label4 = QLabel(self)
            
            label1.setText("这是一个文本标签。")
            label1.setAutoFillBackground(True) 
            palette = QPalette()   
            palette.setColor(QPalette.Window,Qt.blue)  
            label1.setPalette(palette) 
            label1.setAlignment( Qt.AlignCenter)
              
            label2.setText("<a href='#'>欢迎使用Python GUI 应用</a>")
            
            label3.setAlignment( Qt.AlignCenter)    
            label3.setToolTip('这是一个图片标签')
            label3.setPixmap( QPixmap("./images/python.jpg"))
    
            label4.setText("<A href='http://www.cnblogs.com/wangshuo1/'>欢迎访问信平的小屋</a>")
            label4.setAlignment( Qt.AlignRight)
            label4.setToolTip('这是一个超链接标签')
            
            vbox = QVBoxLayout()
            vbox.addWidget(label1)
            vbox.addStretch()
            vbox.addWidget(label2)
            vbox.addStretch()
            vbox.addWidget( label3 )
            vbox.addStretch()
            vbox.addWidget( label4)
            
            label1.setOpenExternalLinks(True)
            # 打开允许访问超链接,默认是不允许,需要使用 setOpenExternalLinks(True)允许浏览器访问超链接
            label4.setOpenExternalLinks( False )
            # 点击文本框绑定槽事件  
            label4.linkActivated.connect( link_clicked )
            
            # 划过文本框绑定槽事件       
            label2.linkHovered.connect( link_hovered )
            label1.setTextInteractionFlags( Qt.TextSelectableByMouse )
    
            self.setLayout(vbox)
            self.setWindowTitle("QLabel 例子")
            
    def link_hovered():
        print("当鼠标滑过label-2标签时,触发事件。")
            
    def link_clicked():
        print("当鼠标点击label-4标签时,触发事件。" )
      
    if __name__ == "__main__":  
        app = QApplication(sys.argv)  
        win = WindowDemo()  
        win.show()  
        sys.exit(app.exec_())
    

    文本框类控件

    QLineEdit

    QLineEdit类是一个单行文本框控件,可以输入单行字符串。如果需要输入多行字符串,则使用QTextEdit类。

    常用方法 image
    常用信号 image
    相关掩码 image
    示例: image
    其他
    • 在通常情况下,我们会对用户的输入做一些限制,可以通过验证器来进行。常见的验证器有:整型验证器、浮点型验证器及其他自定义验证器。

    QTextEdit

    QTextEdit类是一个多行文本框控件,可以显示多行文本内容,当文本内容超出控件显示范围时,可以显示水平个垂直滚动条。

    常用方法 image

    教材

    image

    未完待续

    相关文章

      网友评论

          本文标题:PyQt5学习笔记——基本窗口组件(1)

          本文链接:https://www.haomeiwen.com/subject/zqbmphtx.html