I have a main window desiged with qtdesigner. when I press a button, I would like to open a new window. To do that, I was thinking it was possible to use the Qt loader function and I wrote this function (this function is executed when I press a button in my main window).
def open_new_window(self):
ui_file = QFile('gui/new_window.ui')
ui_file.open(QFile.ReadOnly)
loader = QUiLoader()
self.window = loader.load(ui_file)
ui_file.close()
return
but when I do that, It close the program. Any Idea on what's wrong? Can I use the loader function to open my uifile? It is working for personalized widget import, why not for a new window?
edit:
I changed the function a litle bit:
def open_new_window(self):
ui_file = QFile('gui/new_window.ui')
ui_file.open(QFile.ReadOnly)
loader = QUiLoader()
window = loader.load(ui_file)
window.show()
ui_file.close()
return
This time the 2nd window is opening, but closing instantaneously...
Ok, I got it. The right code is:
def open_new_window(self):
ui_file = QFile('gui/new_window.ui')
ui_file.open(QFile.ReadOnly)
loader = QUiLoader()
self.window2 = loader.load(ui_file)
self.window2.show()
ui_file.close()
return
What I changed: - I insert the "self." in front of the window call. Without that, the window close immediately because the function is ended. With the self it remains alive. - I also changed the name of the window in "window2". The reason is that when I call my main window, I already used "window". As a result it replace the previous one. with a new name, both stay open!
regards
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.