pyqt5 按钮 弹出 另外一个窗口

代码:

# -*- coding: utf-8 -*-

import sys
from PyQt5.QtCore import pyqtSignal
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton


class FirstWindow(QMainWindow):
    sig = pyqtSignal()

    def __init__(self, parent=None):
        super(FirstWindow, self).__init__(parent)
        self.tick_win = None
        self.btn = QPushButton(self)
        self.hide_btn = QPushButton(self)
        self.init_ui()

    def init_ui(self):

        self.resize(200, 200)
        self.setWindowTitle('FirstWindow')

        self.btn.setText('Emit')
        self.btn.setGeometry(30, 40, 60, 40)
        self.btn.clicked.connect(self.call_back_btn)
        self.sig.connect(self.call_back_sig)

        self.hide_btn.setText('hide')
        self.hide_btn.setGeometry(30, 120, 60, 40)

        self.hide_btn.clicked.connect(self.call_back_hide)

    def call_back_btn(self):
        self.sig.emit()

    def call_back_sig(self):

        if self.tick_win:
            print("++++++++++++++++++++++ call_back_sig first +++++++++++++++++++++")
            self.tick_win.show()
        else:
            self.tick_win = SecondWindow()
            self.tick_win.show()
            #self.tick_win.move(200, 200)
            print("--------------------- call_back_sig second ----------------")

    def call_back_hide(self):
        if self.tick_win:
            self.tick_win.hide()


class SecondWindow(QMainWindow):

    def __init__(self, parent=None):
        super(SecondWindow, self).__init__(parent)
        self.resize(200, 100)
        self.setWindowTitle('SecondWindow')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = FirstWindow()![在这里插入图片描述](https://img-blog.csdnimg.cn/20200407112750351.gif)
    w.show()
    sys.exit(app.exec_())

效果:
在这里插入图片描述
那个拖动时我手动 拖动的
需要找到一个方法 把 弹出的 窗口 自动放到 刚才的窗口的旁边 ,而不是覆盖

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
下面是一个示例代码,展示如何使用PyQt5创建一个按钮,当点击该按钮时,一个新的QWidget窗口: ```python import sys from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox class MyWindow(QWidget): def __init__(self): super().__init__() # 创建一个按钮 self.btn = QPushButton('Click me', self) self.btn.move(50, 50) self.btn.clicked.connect(self.show_message) def show_message(self): # 创建一个 QMessageBox 对话框 msg_box = QMessageBox() msg_box.setText('Hello, World!') msg_box.exec_() if __name__ == '__main__': app = QApplication(sys.argv) window = MyWindow() window.setGeometry(300, 300, 250, 150) window.setWindowTitle('PyQt5 Example') window.show() sys.exit(app.exec_()) ``` 在这个示例中,我们首先创建了一个MyWindow类,它继承自QWidget。在MyWindow类的构造函数中,我们创建了一个QPushButton对象,并将其移动到(50, 50)的位置。我们还连接了按钮的clicked信号到show_message()方法。 show_message()方法创建了一个QMessageBox对话框,并将其文本设置为"Hello, World!"。最后,我们调用了msg_box.exec_()来显示对话框。 在我们的main函数中,我们首先创建了一个QApplication对象,然后创建了一个MyWindow对象,并将其设置为主窗口。我们还设置了窗口的大小和标题,并使用window.show()方法显示窗口。 最后,我们调用了sys.exit(app.exec_())来启动应用程序的事件循环。这将允许我们与窗口进行交互,并显示对话框,当我们点击按钮时。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值