gpt4 book ai didi

python - PyQt 从另一个类访问属性

转载 作者:太空宇宙 更新时间:2023-11-03 14:59:10 25 4
gpt4 key购买 nike

我无法从另一个类(user_register_window)修改第一个类(login_window)的属性...我的代码如下:

class login_window(QtGui.QWidget, Ui_login_form):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.setupUi(self)
self.register_window = None
self.login_btn.clicked.connect(self.login_func)
self.register_btn.clicked.connect(self.register_func)
usernames_list = c.execute("SELECT USERNAME FROM register_table").fetchall()
for data in usernames_list:
self.username_combo_field.addItems(data)
def register_func(self):
if self.register_window is None:
self.register_window = user_register_window(self)
self.register_btn.setEnabled(False)
self.login_btn.setEnabled(False)
self.register_window.show()



class user_register_window(QtGui.QDialog, Ui_register_form):
def __init__(self, parent=None):
QtGui.QDialog.__init__(self, parent)
self.setupUi(self)
self.setWindowFlags(self.windowFlags() | QtCore.Qt.CustomizeWindowHint)
self.setWindowFlags(self.windowFlags() & ~QtCore.Qt.WindowContextHelpButtonHint)
self.setWindowFlags(self.windowFlags() & ~QtCore.Qt.WindowCloseButtonHint)
self.cancel_btn.clicked.connect(self.cancel_pressed)

def cancel_pressed(self):
user_register_window.close(self)
login_window.login_btn.setEnabled(True) #doesn't work

我的login_window首先运行,因此当我单击register_btn时,会出现“user_register_window”,并且在login_window中禁用register_btn和login_btn。到目前为止,一切正常,我的问题是当我关闭“user_register_window”时。当我按cancel_btn时,我想再次启用“register_btn”和“login_btn”。

我尝试使用以下代码:

login_window.login_btn.setEnabled(True)

在cancel_pressed函数内部,但它不起作用。

AttributeError: type object 'login_window' has no attribute 'login_btn'

有办法吗?

非常感谢您的帮助!!!

最佳答案

调用 login_window.login_btn.setEnabled(True) 无法访问该属性,因为您引用的是该类,而不是实例(并且该属性仅在实例上设置,在构造函数)。

您可以使用父链接从第二个实例访问 login_window,因为您已将第二个实例声明为子窗口小部件(使用 self.register_window = user_register_window(self)),您可以使用以下几行来实现此目的:

self.parent().login_btn.setEnabled(True)
self.parent().register_btn.setEnabled(False)

#and it's better to close the widget with :
self.close()

关于python - PyQt 从另一个类访问属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45265512/

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