You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Admin类的message方法获取msg变量并在其他.py文件使用?

解决方法

方案1:将msg设为类实例属性

把msg定义为Admin类的实例变量,只要持有Admin类的实例,就能在其他文件中访问到它:

修改Admin类的message方法:

def message(self):
    name = self.name.text()
    price = self.price.text()
    desc = self.description.text()
    self.msg = f'{name}, {price}, {desc}'  # 改为实例属性

在其他.py文件中,获取到Admin的实例后即可访问:

# 假设已获取Admin实例a
if hasattr(a, 'msg'):
    print(a.msg)  # 使用msg变量

注意:只有send_button被点击、message方法执行过后,self.msg才会有有效值,建议添加存在性判断避免报错。

方案2:让message方法返回msg值

如果需要手动调用message方法并获取结果,可修改方法添加返回语句:

def message(self):
    name = self.name.text()
    price = self.price.text()
    desc = self.description.text()
    msg = f'{name}, {price}, {desc}'
    return msg  # 添加返回语句

在其他文件中手动调用方法获取值:

admin_instance = Admin()
current_msg = admin_instance.message()
print(current_msg)

注:这种方式是直接计算当前输入框内容,不会触发按钮点击的UI逻辑。

方案3:使用PyQt信号传递msg(推荐)

这是符合PyQt框架设计的方式,通过自定义信号传递数据,避免直接依赖实例属性:

先在Admin类中定义信号,再在message方法中发射信号:

from PyQt5 import QtCore, QtGui, QtWidgets
import sys
import admin

class Admin(QtWidgets.QMainWindow, admin.Ui_Dialog):
    # 自定义信号,参数为字符串类型
    msg_generated = QtCore.pyqtSignal(str)

    def __init__(self, parent=None):
        super(Admin, self).__init__(parent)
        self.setupUi(self)
        self.send_button.clicked.connect(self.message)

    def message(self):
        name = self.name.text()
        price = self.price.text()
        desc = self.description.text()
        msg = f'{name}, {price}, {desc}'
        self.msg_generated.emit(msg)  # 发射信号传递msg

在其他.py文件中连接信号接收msg:

# 假设已获取Admin实例a
a.msg_generated.connect(handle_admin_msg)

def handle_admin_msg(msg):
    # 处理接收到的msg
    print("收到Admin的消息:", msg)

这种方式能在message方法执行时自动传递最新的msg,无需主动获取,适配UI交互场景。

内容的提问来源于stack exchange,提问作者trp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 02:22:41