PyQt基础_010_对话框类控件QDialog

本文详细介绍了在PyQt5中使用QDialog创建对话框,包括如何设置窗口、添加按钮以及处理accept(),reject(),done()事件。展示了lambda函数和传统绑定方法在事件连接中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本案例

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

class DialogDemo( QMainWindow ):

    def __init__(self, parent=None):
        super(DialogDemo, self).__init__(parent) 
        self.setWindowTitle("Dialog 例子")
        self.resize(350,300)

        self.btn = QPushButton( self)
        self.btn.setText("弹出对话框") 
        self.btn.move(50,50) 
        self.btn.clicked.connect(self.showdialog) 

    def showdialog(self ):
        dialog = QDialog()
        btn = QPushButton("ok", dialog )
        btn.move(50,50)
        dialog.setWindowTitle("Dialog")
        dialog.setWindowModality(Qt.ApplicationModal)
        dialog.exec_()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = DialogDemo()
    demo.show()
    sys.exit(app.exec_())

按钮改为接收,拒绝,完成

import sys

from PyQt5.Qt import *

# 1. 创建一个应用程序对象
app = QApplication(sys.argv)

# 2.控件的操作
# 2.1创建控件
window = QWidget()
# 2.2设置控件

window.setWindowTitle("QDialog")
window.resize(500, 500)
window.move(400, 250)

d = QDialog(window)
d.setWindowTitle("对话框")

btn1 = QPushButton("accept", d)
btn1.move(100, 20)
btn1.clicked.connect(lambda: d.accept())
btn2 = QPushButton("reject", d)
btn2.move(200, 20)
btn2.clicked.connect(lambda: d.reject())
btn3 = QPushButton("done", d)
btn3.move(300, 20)
btn3.clicked.connect(lambda: d.done(8))

d.accepted.connect(lambda: print("点击了接受按钮"))
d.rejected.connect(lambda: print("点击了拒绝按钮"))
d.finished.connect(lambda val: print("完成", val))

d.show()

# 2.3展示控件
window.show()

# 3.应用程序的执行, 进入到消息循环
sys.exit(app.exec_())

不习惯与用lambda方式的,可以用传统的绑定方法的方式

import sys
from PyQt5.QtGui import QFont
from PyQt5.Qt import *

def d_yes():
    print('yes')

def d_no():
    print('no')

# 1. 创建一个应用程序对象
app = QApplication(sys.argv)

# 2.控件的操作
# 2.1创建控件
window = QWidget()
# 2.2设置控件

window.setWindowTitle("QDialog")
window.resize(500, 500)
window.move(400, 250)


dialog_start_check=QDialog(window)
dialog_start_check.setWindowTitle('Warning')

dialog_start_check.resize(1000,600)

presetting_grid = QGridLayout() 

# self.dialog_start_label=QLabel(self.dialog_start_check)
dialog_start_label=QLabel()

dialog_start_label.setText(
'''
This is a dialog
'''
            )

dialog_start_font = QFont()
dialog_start_font.setPointSize(10)
dialog_start_font.setBold(True)
dialog_start_label.setFont(dialog_start_font)


dialog_start_btn1=QPushButton('Yes')
dialog_start_btn1.clicked.connect(d_yes)


dialog_start_btn2=QPushButton('No')
dialog_start_btn2.clicked.connect(d_no)

presetting_grid.addWidget(dialog_start_label,0,0,1,2)
presetting_grid.addWidget(dialog_start_btn1,1,0)
presetting_grid.addWidget(dialog_start_btn2,1,1)

dialog_start_check.setLayout(presetting_grid)

dialog_start_check.show()



# 2.3展示控件
window.show()

# 3.应用程序的执行, 进入到消息循环
sys.exit(app.exec_())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器人迈克猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值