在PyQt5中实现点击按钮打开新窗口功能—窗口的跳转功能实现

百度搜索“pyqt5中如何点击按钮打开新的窗口”,自动生成以下参考代码。

在PyQt5中,要实现点击按钮打开新窗口,你需要定义一个新的窗口类,并在按钮的点击信号(clicked)处理函数中创建并显示这个新窗口。以下是一个简单的例子

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QWidget, QVBoxLayout, QMessageBox
 
class NewWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("新窗口")
        self.show()
 
class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("主窗口")
        self.button = QPushButton("打开新窗口")
        self.button.clicked.connect(self.open_new_window)
 
        layout = QVBoxLayout()
        layout.addWidget(self.button)
 
        central_widget = QWidget()
        central_widget.setLayout(layout)
        self.setCentralWidget(central_widget)
 
    def open_new_window(self):
        # 创建并显示新窗口
        self.new_window = NewWindow()
 
 
if __name__ == "__main__":
    app = QApplication(sys.argv)
    mainWin = MainWindow()
    mainWin.show()
    sys.exit(app.exec_())

在这个例子中,MainWindow是主窗口类,它有一个按钮用于打开新窗口。当按钮被点击时,open_new_window方法会被调用,创建并显示NewWindow实例,即新窗口。

基于上述思路,使用一个主窗口类mainWindow管理多个窗口的跳转(窗口的显示和消失)

class mainWindow(QMainWindow):
    def __init__(self):
        super(mainWindow, self).__init__()
        self.login_window = loginWindow()
        self.login_window.show()

        self.menu_window = menuWindow()
        self.create_window = createWindow()
        # 连接信号与槽
        self.login_window.send_data.connect(self.menu_window.receive_data)
        # 点击登录按钮弹出新窗口,此登录界面窗口关闭
        self.login_window.login_pushButton.clicked.connect(self.open_menu_window)
        # 点击新建需求按钮,跳转出需求创建窗口
        self.menu_window.my_new_order_pushButton.clicked.connect(self.open_create_window)

    def open_menu_window(self):
        # 创建并显示新窗口
        self.menu_window.show()
        self.login_window.hide()

    def open_create_window(self):
        # 创建并显示新窗口
        self.create_window.show()
        self.menu_window.hide()


if __name__ == "__main__":
    app = QApplication(sys.argv)
    ui = mainWindow()
    # ui.show()
    sys.exit(app.exec_())

利用窗口逻辑业务代码与界面生成代码相分离的原则,在main.py中重新定义一个新的窗口类继承界面代码的类(界面代码在另外的.py文件)。

在这里插入图片描述

官方文档

QMainWindow类:https://doc.qt.io/qt-5/qmainwindow.html

QWidget类:https://doc.qt.io/qt-5/qwidget.html

QDialog类:https://doc.qt.io/qt-5/qdialog.html

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在PyQt5实现页面间的切换,可以使用QStackedWidget控件。QStackedWidget控件可以将多个页面按照堆栈的形式进行管理,只显示当前活动的页面。 以下是一个简单的示例代码,演示如何使用QStackedWidget控件实现页面切换: ```python import sys from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QLabel, QStackedWidget class Page1(QWidget): def __init__(self): super().__init__() layout = QVBoxLayout() self.label = QLabel("This is Page 1") layout.addWidget(self.label) button = QPushButton("Go to Page 2") button.clicked.connect(self.go_to_page2) layout.addWidget(button) self.setLayout(layout) def go_to_page2(self): # 切换到页面2 stacked_widget.setCurrentIndex(1) class Page2(QWidget): def __init__(self): super().__init__() layout = QVBoxLayout() self.label = QLabel("This is Page 2") layout.addWidget(self.label) button = QPushButton("Go back to Page 1") button.clicked.connect(self.go_to_page1) layout.addWidget(button) self.setLayout(layout) def go_to_page1(self): # 切换到页面1 stacked_widget.setCurrentIndex(0) # 创建应用程序 app = QApplication(sys.argv) # 创建QStackedWidget控件 stacked_widget = QStackedWidget() # 创建两个页面并添加到QStackedWidget page1 = Page1() stacked_widget.addWidget(page1) page2 = Page2() stacked_widget.addWidget(page2) # 默认显示第一个页面 stacked_widget.setCurrentIndex(0) # 创建主窗口并添加QStackedWidget控件 main_window = QWidget() layout = QHBoxLayout() layout.addWidget(stacked_widget) main_window.setLayout(layout) # 显示窗口 main_window.show() sys.exit(app.exec_()) ``` 在这个示例,我们定义了两个页面Page1和Page2,分别继承自QWidget。在Page1,我们添加了一个按钮,点击按钮可以切换到Page2;在Page2,我们添加了一个按钮,点击按钮可以切换回Page1。然后,我们将这两个页面添加到QStackedWidget,并将QStackedWidget添加到主窗口。在主窗口,我们使用水平布局将QStackedWidget放置在窗口间。 运行程序,可以看到初始时显示的是Page1,在Page1点击按钮可以切换到Page2,在Page2点击按钮又可以切换回Page1。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Logintern09

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

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

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

打赏作者

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

抵扣说明:

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

余额充值