Multithreading PySide,从正在运行的程序中打开一个新窗口
代码: 如果您单击“配置”,然后单击“设置”,则会弹出一个窗口,确实如此。但它闪烁着,消失了。我试图添加第二个sys.exit(app.exec_u3;()),但由于它位于另一个方法中,因此没有定义它。我应该让应用程序全球化还是和所谓的“线程化”有关?Multithreading PySide,从正在运行的程序中打开一个新窗口,multithreading,widget,window,pyside,Multithreading,Widget,Window,Pyside,代码: 如果您单击“配置”,然后单击“设置”,则会弹出一个窗口,确实如此。但它闪烁着,消失了。我试图添加第二个sys.exit(app.exec_u3;()),但由于它位于另一个方法中,因此没有定义它。我应该让应用程序全球化还是和所谓的“线程化”有关? 问候您需要保留新窗口的参考。否则,它将不被引用,并将被垃圾收集 import sys from PySide import QtGui class BrowserDevelopment(QtGui.QMainWindow): def
问候您需要保留新窗口的参考。否则,它将不被引用,并将被垃圾收集
import sys
from PySide import QtGui
class BrowserDevelopment(QtGui.QMainWindow):
def __init__(self):
super(BrowserDevelopment, self).__init__()
self.startingUI()
def startingUI(self):
self.setWindowTitle('Alphabrowser')
self.resize(800, 400)
self.statusBar()
#Menueinstellungen an sich
menue = self.menuBar()
#Actions des Menues:
#datei menue
menuleiste_datei = menue.addMenu('File')
datei_exit = QtGui.QAction('Exit', self)
datei_exit.setStatusTip('Close the programm')
menuleiste_datei.addAction(datei_exit)
datei_exit.triggered.connect(self.close)
#Einstellungen menue
menuleiste_configurations = menue.addMenu('Configurations')
configurations_settings = QtGui.QAction('Settings', self)
configurations_settings.setStatusTip('Configurations(Settings)')
menuleiste_configurations.addAction(configurations_settings)
configurations_settings.triggered.connect(self.newwindow)
self.show()
def newwindow(self):
wid = QtGui.QWidget()
wid.resize(250, 150)
wid.setWindowTitle('NewWindow')
wid.show()
def main():
app = QtGui.QApplication(sys.argv)
ex = BrowserDevelopment()
sys.exit(app.exec_())
if __name__== '__main__':
main()
def新窗口(自):
self.wid=QtGui.QWidget()
自我宽度调整(250150)
self.wid.setWindowTitle('NewWindow')
self.wid.show()
尽管我不会在newwindow方法中创建引用。您最好在UI初始化方法中设置首选项窗口,然后只调用self.wid.show()您需要保留新窗口的引用。否则,它将不被引用,并将被垃圾收集
import sys
from PySide import QtGui
class BrowserDevelopment(QtGui.QMainWindow):
def __init__(self):
super(BrowserDevelopment, self).__init__()
self.startingUI()
def startingUI(self):
self.setWindowTitle('Alphabrowser')
self.resize(800, 400)
self.statusBar()
#Menueinstellungen an sich
menue = self.menuBar()
#Actions des Menues:
#datei menue
menuleiste_datei = menue.addMenu('File')
datei_exit = QtGui.QAction('Exit', self)
datei_exit.setStatusTip('Close the programm')
menuleiste_datei.addAction(datei_exit)
datei_exit.triggered.connect(self.close)
#Einstellungen menue
menuleiste_configurations = menue.addMenu('Configurations')
configurations_settings = QtGui.QAction('Settings', self)
configurations_settings.setStatusTip('Configurations(Settings)')
menuleiste_configurations.addAction(configurations_settings)
configurations_settings.triggered.connect(self.newwindow)
self.show()
def newwindow(self):
wid = QtGui.QWidget()
wid.resize(250, 150)
wid.setWindowTitle('NewWindow')
wid.show()
def main():
app = QtGui.QApplication(sys.argv)
ex = BrowserDevelopment()
sys.exit(app.exec_())
if __name__== '__main__':
main()
def新窗口(自):
self.wid=QtGui.QWidget()
自我宽度调整(250150)
self.wid.setWindowTitle('NewWindow')
self.wid.show()
尽管我不会在newwindow方法中创建引用。您最好在UI初始化方法中设置“首选项”窗口,然后只需调用self.wid.show()哦,您好,谢谢您的回复。天哪,我想我需要重读一些关于方法的东西。但是你为什么不为窗户设计一种新的方法呢?我这样做是为了在一个单独的方法中处理每个新窗口,因为这样你每次都在重新创建窗口。通过将其放置在初始化方法(或其他称为suring initialization的方法)中,您可以保留相同的引用,并随时显示/隐藏它。更快,更少混乱,并允许您保留相同的对象(例如,您也可以在其中保留一些数据)。哦,嗨,谢谢您的回复。天哪,我想我需要重读一些关于方法的东西。但是你为什么不为窗户设计一种新的方法呢?我这样做是为了在一个单独的方法中处理每个新窗口,因为这样你每次都在重新创建窗口。通过将其放置在初始化方法(或其他称为suring initialization的方法)中,您可以保留相同的引用,并随时显示/隐藏它。更快,更少混乱,并允许您保留相同的对象(例如,您也可以在其中保留一些数据)。