gpt4 book ai didi

python - 在 PyQt 中将变量从一个类传递到另一个类

转载 作者:行者123 更新时间:2023-12-01 04:35:06 25 4
gpt4 key购买 nike

我想将一个字符串变量从 Main_Window 类传递到 PyQt 中的另一个 QDialog 类。我不明白我做错了什么。我想将 host_mac 变量从主类传递到 QDialog 类。这是我的代码的主要部分。

这是 QDialog 类:

class Client(QDialog):
def __init__(self, parent=None):
super(Client, self).__init__(parent)
self.pb = QPushButton()
self.pb.setObjectName("connect")
self.pb.setText("Connect")

layout = QFormLayout()
layout.addWidget(self.pb)

self.setLayout(layout)
self.connect(self.pb, SIGNAL("clicked()"),self.set_client)
self.setWindowTitle("Learning")

def set_client(self):
self.client = self.le.text()
print 'provided client mac is ' + self.client + 'and host_mac is ' + Main_window_ex.host_mac

这里是 Main_Window 类:

class Main_window_ex(QMainWindow, Ui_Main_window):   
def __init__(self, parent = None):
"""
Default Constructor. It can receive a top window as parent.
"""
QMainWindow.__init__(self, parent)
self.setupUi(self)


self.host_mac = 'blah blah'

#more code beneeth

但我收到以下错误:

AttributeError: type object 'Main_window_ex' has no attribute 'host_mac'

最佳答案

Main_window_ex.host_mac 引用一个 class 变量(因为 Main_window_ex 只是一个类),但您想要访问 class 变量>实例变量。换句话说,在类实例化之前,host_mac 并未定义。

有几种方法可以解决这个问题。假设 Main_window_ex 负责创建 Client,那么一种简单的方法是将变量传递给 Client:

class Client(QDialog):
def __init__(self, host_mac, parent=None):
self.host_mac = host_mac
...

并像这样使用它:

    def set_client(self):
self.client = self.le.text()
print 'provided client mac is ' + self.client + 'and host_mac is ' + self.host_mac

作为旁注,您可能需要使用新样式的连接语法:

# old style
# self.connect(self.pb, SIGNAL("clicked()"),self.set_client)

# new style
self.pb.clicked.connect(self.set_client)

关于python - 在 PyQt 中将变量从一个类传递到另一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31843262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com