【发布时间】:2013-03-04 15:20:36
【问题描述】:
我是 Python 和 pyside 的初学者。我有一个 .ui 文件,我想在单击主窗口中的按钮时将其作为第二个窗口打开。我使用了这段代码,但它可能因为“自我”而关闭了主窗口。请帮帮我。
class PhoneBook:
def __init__(self):
loader = QUiLoader();
file = QFile("PhoneBook.ui");
file.open(QFile.ReadOnly);
self.ui = loader.load(file);
file.close();
self.ui.pushButton.clicked.connect(self.add);
def __del__ ( self ):
self.ui = None;
def add(self):
loader1 = QUiLoader();
file1 = QFile("Add.ui");
file1.open(QFile.ReadOnly);
self.ui = loader1.load(file1);
file1.close();
self.ui.show();
def show(self):
self.ui.show();
【问题讨论】:
-
我没有 PySide 的工作知识,但您的猜测接近事实,在您的 add() 方法中,您实际上是用新加载的 ui 文件覆盖了对象变量
self.ui.如果您打算添加另一个窗口,请通过创建局部变量ui2或另一个对象变量self.ui2来生成另一个窗口,这取决于您需要对第二个窗口做什么。 -
谢谢woozyking。它真的奏效了。但只是另一个菜鸟问题。如何使用 QDialog 创建一个新对话框?表示我想在 add 方法中创建一个新对话框而不使用 .ui 文件。
-
很高兴有帮助。正如我所说,我没有 PySide 的工作知识。查看他们的官方文档srinikom.github.com/pyside-docs 以获得深入参考。我确信有一些方法可以在不使用此类 .ui 文件的情况下以编程方式操作 UI 元素