8.1 QDialog对话框控件基类

一、QDialog对话框控件基类

1.基本概念

  • 对话框控件主要用于短时间内的交互,分为模态和非模态两种类型,其中模态对话框有分为窗口级别和应用程序级别两种。
# 1用于短期任务或临时交互:
   # 1.模态对话框:应用程序级别(exce(),需要关闭交互窗口之后才能操作其他窗口==模态)
   # 2.模态对话框:窗口级别(open()仅阻塞关联窗口交互,不影响其他窗口的交互==模态)
   # 3.非模态对话框:show()
   # 模态(阻塞性);非模态(不阻塞)

# 2尺寸调整
    qd.setSizeGripEnabled(True)  # 控件右下角显示

# 3槽函数
   # qd.accept()  # 接受
   # qd.reject()  # 取消
   # qd.done()  # 替代其他功能

# 4设置和获取数值
   # qd.setResult(int)
   # qd.result()

# 5可用信号
   # qd.accepted()
   # qd.finished()
   # qd.rejected()

2.代码

点击查看代码
from PyQt5.Qt import *
import sys


class Window(QWidget) :
    def __init__(self) :
        super().__init__()
        self.setWindowTitle("QDialog对话框控件 - PyQt5中文网")
        self.resize(600, 500)
        self.func_list()

    def func_list(self) :
        self.func()

    def func(self) :
        # 四种对话框和一个日历控件
        # QFontDialog
        # QColorDialog
        # QFileDialog
        # QInputDialog
        # QCalendarWidget
        '''
        # 用于短期任务或临时交互:
        # 1.模态对话框:应用程序级别(exce(),需要关闭交互窗口之后才能操作其他窗口==模态)
        # 2.模态对话框:窗口级别(open()仅阻塞关联窗口交互,不影响其他窗口的交互==模态)
        # 3.非模态对话框:show()
        # 模态(阻塞性);非模态(不阻塞)

        '''

        # 1模态演示
        qd = QDialog(self)
        #qd.exec()
        #qd.open()  # 不关联的时候就能拖动

        #qd.setModal(True)  # 将非模态设置为模态窗口
        #qd.setWindowModality(Qt.ApplicationModal)  # 设置为窗口级别Qt.WindowModal,设置成应用程序级别Qt.ApplicationModal 只能用exec()输出
        #qd.show()

        # 2尺寸调整
        qd.setSizeGripEnabled(True)  # 控件右下角显示

        '''
        # 3槽函数
        # qd.accept()  # 接受
        # qd.reject()  # 取消
        # qd.done()  # 替代其他功能
        '''

        btn1 = QPushButton(qd)
        btn1.move(10, 10)
        btn1.setText('按钮1')
        btn1.clicked.connect(lambda : qd.accept())  # 接受,返回值为1

        btn2 = QPushButton(qd)
        btn2.move(60, 60)
        btn2.setText('按钮2')
        btn2.clicked.connect(lambda : qd.reject())  # 拒绝,返回值为0

        btn3 = QPushButton(qd)
        btn3.move(10, 100)
        btn3.setText('按钮3')
        btn3.clicked.connect(lambda : qd.done(5))  # 返回值为5

        #print(qd.exec_())#输出上面三个信号的返回值

        '''
        # 4设置和获取数值
        # qd.setResult(int)
        # qd.result()
        '''
        # btn1 = QPushButton(qd)
        # btn1.move(10, 100)
        # btn1.setText('按钮1')
        # btn1.clicked.connect(lambda: qd.setResult(111))
        #
        # btn2 = QPushButton(qd)
        # btn2.move(60, 60)
        # btn2.setText('按钮2')
        # btn2.clicked.connect(lambda: print(qd.result()))
        #
        # print(qd.exec_())
        '''
        # 5可用信号
        # qd.accepted()
        # qd.finished()
        # qd.rejected()
        '''

        qd.accepted.connect(lambda: print('接受'))
        qd.rejected.connect(lambda: print('拒绝'))
        qd.finished.connect(lambda val: print('结束', val))
        qd.open()  # 触发信号


if __name__ == '__main__' :
    app = QApplication(sys.argv)
    window = Window()

    window.show()
    sys.exit(app.exec_())

3.效果

posted @   Trouvaille_fighting  阅读(103)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示

目录导航