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

2020-04-06  本文已影响0人  SS小鱼干

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

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

QMainWindow

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

常用方法

image

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


QWidget

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

坐标系统

image

最简单的窗口

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_()) # 最后进入该程序的主循环。事件处理从本行代码开始,主循环接收事件消息并将其分发给程序的各个控件。

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

未完待续

上一篇下一篇

猜你喜欢

热点阅读