我是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