我是Python和pyside的初学者。我有一个.ui文件,我想在点击主窗口中的一个按钮时打开它作为第二个窗口。我使用了这个代码,但是它可能因为“自我”而关闭了主窗口。请帮助我。如何在pyside中打开一个新窗口
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 2013-03-04 15:36:47
感谢woozyking。它真的有效。但只是另一个问题。如何使用QDialog创建一个新的对话框?意思是我想在不使用.ui文件的情况下在add方法中创建一个新的对话框。 – GanitK 2013-03-04 15:53:00
很高兴帮助。正如我所说的,我没有PySide的工作知识。请查阅官方文档http://srinikom.github.com/pyside-docs/以获得深入参考。我确信有方法以编程方式操作UI元素,而不使用这样的.ui文件 – woozyking 2013-03-04 15:56:31