• [ Python ] PyQt5 PySide2 笔记


    https://www.cnblogs.com/yeungchie/

    PyQt5

    from PyQt5.QtWidgets import *
    from PyQt5.QtCore import *
    from PyQt5.QtGui import *
    

    PySide2

    from PySide2.QtWidgets import *
    from PySide2.QtCore import *
    from PySide2.QtGui import *
    

    顶部应用

    QApplication

    app = QApplication([])
    app.setStyle(QStyleFactory.create('Fusion'))    # 稍微好看点的样式
    app.exec_()
    

    部件

    QWidget

    wg = QWidget()
    

    窗口标题

    wg.setWindowTitle('YEUNGCHIE')
    

    窗口尺寸

    • 初始尺寸
    wg.resize(300, 200) # 设置尺寸
    wg.size()           # 获取当前尺寸
    
    • 最小/大尺寸
    wg.setMinimumSize(300, 200) # 设置最小尺寸
    wg.setMaximumSize(300, 200) # 设置最大尺寸
    wg.minimumSize()            # 获取最小尺寸
    wg.maximumSize()            # 获取最大尺寸
    
    • 固定尺寸
    wg.setFixedSize(300, 200)   # 固定尺寸
    wg.setFixedWidth(300)       # 固定宽度
    wg.setFixedHeight(200)      # 固定高度
    
    • 宽度
    wg.setMinimumWidth(300)     # 设置最小宽度
    wg.setMaximumWidth(300)     # 设置最大宽度
    wg.minimumWidth()           # 获取最小宽度
    wg.maximumWidth()           # 获取最大宽度
    
    • 高度
    wg.setMinimumHeight(200)    # 设置最小高度
    wg.setMaximumHeight(200)    # 设置最大高度
    wg.minimumHeight()          # 获取最小高度
    wg.maximumHeight()          # 获取最大高度
    

    窗口位置

    wg.move(300, 200)
    

    窗口置顶

    wg.setWindowFlags(Qt.WindowStaysOnTopHint)
    

    设置布局

    wg.setLayout(self.gridLayout)
    

    QLabel

    label = QLabel()
    

    文本

    label.setText('LABEL')      # 设置文本
    label.text()                # 获取文本
    label.setIndent()           # 设置文本缩进
    label.setToolTip( 'Tips' )  # 设置提示
    label.setAlignment( Qt.AlignCenter | Qt.AlignRight )    # 设置文本对齐方式
    

    事件

    • 点击
    label.linkClicked.connect(function) # 点击
    
    • 划过
    label.setText('<a href="https://baidu.com">Baidu</a>')
    label.linkHovered.connect(function) # 划过
    

    QCheckBox

    checkBox = QCheckBox()
    

    文本

    checkBox.setText( 'Enable' )    # 设置文本
    checkBox.text()                 # 获取文本
    

    点击

    checkBox.setChecked(True)   # 选中
    checkBox.setChecked(False)  # 不选中
    checkBox.isChecked()        # 返回选中状态
    

    QLineEdit

    lineEdit = QLineEdit()
    

    文本

    lineEdit.setText( 'working dir' )   # 设置文本
    lineEdit.text()                     # 获取文本
    

    提示词

    lineEdit.setPlaceholderText( '输入框内提示词' )
    lineEdit.setToolTip( '鼠标悬停提示词' )
    

    QComboBox

    comboBox = QComboBox()
    

    添加选项

    comboBox.addItem('virtuoso')
    comboBox.addItem('skipper')
    comboBox.addItems('R0 R90 MX MY MYR90'.split(' '))
    comboBox.insertItem(5, 'MXR90')     # 索引 5 的位置插入 MXR90
    comboBox.insertItems(2, ['R180', 'R270'])
    

    移除选项

    comboBox.removeItem(0)  # 移除第 0 个
    

    选择选项

    comboBox.setCurrentText( 'virtuoso' )   # 设置选择(文本)
    comboBox.currentText()                  # 获取选择(文本)
    comboBox.setCurrentIndex()              # 设置选择(索引)
    comboBox.currentIndex()                 # 获取选择(索引)
    

    选项编辑

    comboBox.setItemText(0, 'Calibre')      # 将第 0 个选项改为 Calibre
    

    QPushButton

    pushButton = QPushButton()
    

    文本

    pushButton.setText( 'OK' )  # 设置文本
    pushButton.text()           # 获取文本
    

    事件

    pushButton.linkClicked.connect(function) # 点击
    

    布局

    QFormLayout

    formLayout = QFormLayout()
    

    标签对齐

    formLayout.setLabelAlignment( Qt.AlignCenter | Qt.AlignRight )  # 靠右中心对齐
    

    增加 row

    formLayout.addRow("标签1 Label", label)
    formLayout.addRow("标签2 CheckBox", checkBox)
    

    QGridLayout

    gridLayout = QGridLayout()
    

    添加组件

    gridLayout.addWidget(label, 0, 0)           # 布置于 row0, col0
    gridLayout.addWidget(checkBox , 0, 1)       # 布置于 row0, col1
    gridLayout.addWidget(lineEdit , 0, 2, 3, 1) # 布置于 row0, col2, row_span3, col_span1
    

    FAQ

    启动失败可以打开 debug 模式

    export QT_DEBUG_PLUGINS=1
    

    缺少 qt5dxcb 安装即可

    yum -y install qt5dxcb-plugin.x86_64
    
  • 相关阅读:
    取石子(斐波那契博弈)
    Kindergarten(网络流解法)
    最大团的一些定理
    Escape(多记一个方向状态的BFS)迷宫逃脱
    网络流的一些定理
    线段树维护动态连续子段HDU1540
    最大流Dinic(模板)
    MCMF最大流最小割(模板)Dijkstra负权优化
    Exchanging Gifts--2019CCPC哈尔滨 E题
    A<=B的前提下全排列A使答案尽量大
  • 原文地址:https://www.cnblogs.com/yeungchie/p/16219094.html
Copyright © 2020-2023  润新知