pyqt4 弹出子窗口,warningBox子窗口示例

这个博客展示了如何使用PyQt4库创建一个警告对话框(warningBox)。它包括一个带有‘确定’和‘取消’按钮的布局,当点击按钮时会将选择返回。在主窗口(MyWindow)中,点击按钮会触发警告子窗口的弹出,并根据用户选择填充返回值列表。
#-*- coding:utf-8 -*-
#######
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys
class warningBox(QDialog):
    def __init__(self,str_title,str_text,list_bool):#####自己写一个warningbox
        super(warningBox,self).__init__(parent = None)
        self.return_value = list_bool
        self.setWindowTitle(str_title)
        self.mainlayout = QGridLayout(self)
        self.labelText = QLabel()
        self.setFont(QFont("Roman times",16))#####字体设置
        self.mainlayout.addWidget(self.labelText,0,0,1,10)
        self.labelText.setText(str_text)
        self.resize(400,100)
        self.buttonSure = QPushButton()
        self.buttonSure.setText(u"确定" )
        self.buttonCancel = QPushButton()
        self.buttonCancel.setText(u"取消" )
        self.mainlayout.addWidget(self.buttonSure,1,2,1,2)
        self.mainlayout.addWidget(self.buttonCancel,1,6,1,2)
        self.setLayout(self.mainlayout)
        self.buttonSure.clicked.connect(self.sureOpra)
        self.buttonCancel.clicked.connect(self.cancelOpra)
        self.show()

    def sureOpra(self):
        self.close()
        self.return_value.append(1)

    def cancelOpra(self):
        self.close()
        self.return_value.append(0)

class MyWindow(QDialog,QWidget):
    def __init__(self,parent = None):
        super(MyWindow,self).__init__(parent)
        self.resize(400,400)
        self.mainlayout = QGridLayout(self)
        self.myButton = QPushButton()
        self.myButton.setText(u"点击弹出警告子窗口")
        self.myButton.clicked.connect(self.newWindow)
        self.mainlayout.addWidget(self.myButton)

    def newWindow(self):
        list_run = []
        dilogUi = warningBox(u"警告示例",u"你被警告了!",list_run)
        if dilogUi.exec_():
            return
        print list_run

app=QApplication(sys.argv)
window=MyWindow()
window.show()
app.exec_()
<think>我们被要求用PyQt6实现点击按钮弹出窗口的功能。根据引用[4]提供的PyQt5示例,我们可以将其转换为PyQt6的代码。需要注意的是,PyQt6与PyQt5在部分模块导入和信号槽使用上略有不同,但整体结构相似。步骤:1.导入必要的模块:从PyQt6中导入QtCore,QtWidgets等。2.创建主窗口类(例如MainWindow),并在其中初始化界面,包括一个按钮。3.将按钮的点击信号连接到打开窗口的槽函数。4.创建窗口类(例如ChildWindow),可以是一个QDialog或QWidget。5.在槽函数中创建窗口的实例,并显示它。注意:在PyQt6中,一些枚举值需要从对应的模块中导入,例如Qt.WindowType中的枚举(如WindowCloseButtonHint)。下面是一个简单的示例代码,使用PyQt6实现点击主窗口按钮弹出窗口的功能。</think>以下是使用 PyQt6 实现点击按钮弹出窗口的完整示例代码: ```python import sys from PyQt6.QtWidgets import ( QApplication, QMainWindow, QPushButton, QDialog, QVBoxLayout, QLabel ) class ChildWindow(QDialog): def __init__(self): super().__init__() self.setWindowTitle("窗口") self.resize(300, 200) layout = QVBoxLayout() layout.addWidget(QLabel("这是弹出窗口!")) self.setLayout(layout) class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("主窗口") self.setGeometry(100, 100, 600, 400) # 创建按钮 self.button = QPushButton("打开窗口", self) self.button.setGeometry(250, 180, 100, 40) self.button.clicked.connect(self.show_child_window) def show_child_window(self): self.child_window = ChildWindow() self.child_window.exec() # 使用exec()以模态方式显示 if __name__ == "__main__": app = QApplication(sys.argv) main_window = MainWindow() main_window.show() sys.exit(app.exec()) ``` ### 代码说明: 1. **主窗口类** `MainWindow`: - 继承自 `QMainWindow` - 包含一个按钮,点击时触发 `show_child_window` 方法 - 使用 `setGeometry(x, y, width, height)` 设置窗口位置和大小 2. **窗口类** `ChildWindow`: - 继承自 `QDialog`(适合作为弹出窗口) - 包含简单布局和文本标签 - 可自定义添加更多控件和功能 3. **关键连接**: - `self.button.clicked.connect(self.show_child_window)` 将按钮点击信号连接到槽函数 - `self.child_window.exec()` 以模态方式显示窗口(阻塞主窗口操作) - 如需非模态窗口(允许同时操作主窗口),改用 `self.child_window.show()` ### 运行效果: 1. 启动程序显示主窗口,包含"打开窗口"按钮 2. 点击按钮弹出居中显示的窗口 3. 窗口关闭前无法操作主窗口(模态特性) ### 自定义扩展: ```python # 添加带关闭按钮的窗口 class AdvancedChildWindow(QDialog): def __init__(self): super().__init__() self.setWindowTitle("高级窗口") self.resize(400, 300) layout = QVBoxLayout() layout.addWidget(QLabel("<h2>可操作内容区域</h2>")) close_btn = QPushButton("关闭窗口") close_btn.clicked.connect(self.close) # 连接关闭信号 layout.addWidget(close_btn) self.setLayout(layout) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值