pyside6子窗口通过信号发送内容到主窗口

from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QLineEdit
from PySide6.QtCore import Signal

class MyWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("主窗口")

        self.lineEditShow = QLineEdit()

        self.mainLayout = QVBoxLayout()
        self.mainLayout.addWidget(self.lineEditShow)
        self.setLayout(self.mainLayout)

        self.bind()

    def bind(self):
        self.subWindow = SubWindow(self)
        self.subWindow.show()

class SubWindow(QWidget):
    sendValueToMain = Signal(str)
    def __init__(self, parent):
        super().__init__()

        self.setWindowTitle("子窗口")
        self.parent = parent
        self.move(20, 20)

        self.lineEdit = QLineEdit()
        self.btn = QPushButton("发送数据到主窗口")

        self.mainLayout = QVBoxLayout()
        self.mainLayout.addWidget(self.lineEdit)
        self.mainLayout.addWidget(self.btn)

        self.setLayout(self.mainLayout)
        self.bind()

    def bind(self):
        self.sendValueToMain.connect(self.parent.lineEditShow.setText)
        self.btn.clicked.connect(self.sendValue)

    def sendValue(self):
        value = self.lineEdit.text()
        self.sendValueToMain.emit(value)

if __name__ == "__main__":
    app = QApplication([])
    window = MyWindow()
    window.show()
    app.exec()

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以通过以下步骤实现登录界面和界面的切换: 1. 创建登录界面和界面的类,分别继承自 `QDialog` 和 `QMainWindow`。 2. 在登录界面的 `__init__` 方法中,创建用户名和密码的输入框、登录按钮等控件,并将它们添加到布局中。 3. 为登录按钮添加点击事件处理函数,当用户点击登录按钮时,获取用户名和密码输入框的文本内容,并进行验证。 4. 如果验证通过,隐藏登录界面,显示界面。可以使用 `hide()` 和 `show()` 方法实现界面的显示和隐藏。 5. 在界面中,添加一个菜单栏或工具栏,其中包含一个退出按钮。为退出按钮添加点击事件处理函数,在函数中退出应用程序。 下面是一个示例代码,仅供参考: ```python from PySide6.QtWidgets import QApplication, QDialog, QMainWindow, QVBoxLayout, QHBoxLayout, QLineEdit, QPushButton, QLabel, QAction class LoginDialog(QDialog): def __init__(self): super().__init__() self.setWindowTitle("Login") # 创建用户名和密码输入框 self.username_edit = QLineEdit() self.password_edit = QLineEdit() self.password_edit.setEchoMode(QLineEdit.Password) # 创建登录按钮 self.login_button = QPushButton("Login") # 将控件添加到布局中 layout = QVBoxLayout() layout.addWidget(QLabel("Username:")) layout.addWidget(self.username_edit) layout.addWidget(QLabel("Password:")) layout.addWidget(self.password_edit) layout.addWidget(self.login_button) self.setLayout(layout) # 为登录按钮添加点击事件处理函数 self.login_button.clicked.connect(self.login) def login(self): # 获取用户名和密码 username = self.username_edit.text() password = self.password_edit.text() # 进行验证,这里简单判断用户名和密码是否为空 if username and password: # 验证通过,隐藏登录界面,显示界面 self.hide() self.main_window.show() else: # 验证不通过,弹出提示框 QMessageBox.warning(self, "Error", "Invalid username or password") class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("Main") # 创建菜单栏和退出按钮 menu_bar = self.menuBar() file_menu = menu_bar.addMenu("File") exit_action = QAction("Exit", self) exit_action.triggered.connect(QApplication.quit) file_menu.addAction(exit_action) if __name__ == "__main__": app = QApplication() login_dialog = LoginDialog() main_window = MainWindow() login_dialog.main_window = main_window main_window.login_dialog = login_dialog main_window.show() login_dialog.exec_() ``` 在上面的代码中,我们创建了 `LoginDialog` 和 `MainWindow` 两个类,分别表示登录界面和界面。在 `LoginDialog` 中,我们创建了用户名和密码的输入框以及登录按钮,并为登录按钮添加了点击事件处理函数。在点击登录按钮时,我们获取用户名和密码输入框的文本内容,并进行简单的验证,如果验证通过,则隐藏登录界面,显示界面。 在 `MainWindow` 中,我们创建了一个菜单栏以及一个退出按钮,并为退出按钮添加了点击事件处理函数,在点击退出按钮时退出应用程序。 在程序中,我们创建了 `LoginDialog` 和 `MainWindow` 的实例,并将它们相互引用,以便在登录界面中可以访问界面,在界面中可以访问登录界面。我们首先显示界面,然后使用 `exec_()` 方法显示登录界面,这样可以保证程序在登录界面关闭之前不会继续执行。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值