Pyside窗口在打开后立即关闭

时间:2014-05-28 09:27:03

标签: python python-2.7 pyside

我在使用这种方法之前已经能够创建pyside UI,但由于某种原因,它不会保持开放状态。它似乎快速闪烁然后关闭。我相信垃圾收集器会删除应用程序而不使用,但我不确定如何更多地使用该应用程序。

# coding: iso8859-1
import locale
import views
from PySide import QtGui
import PySide
from PySide import QtCore
import sys

locale.setlocale(locale.LC_CTYPE, '')
class gui(QtGui.QWidget):

    def __init__(self):
        super(gui, self).__init__()
        print "inside __init__"
        self.initUI()

    def initUI(self):
        self.window = QtGui.QMainWindow(self)
        self.grid = QtGui.QGridLayout()
        self.menuBTN = QtGui.QToolButton()
        self.menuBTN.setText("MENU")
        self.menuBTN.setMinimumSize(QtCore.QSize(100, 100))
        self.grid.addWidget(self.menuBTN, 0, 0, 1, 1)

        self.setLayout(self.grid)
        self.setWindowTitle('Office Works')
        self.showFullScreen()

    def change_layout(self):
        '''
        Method for saving the current view class and
        loading the view requested by the user. this
        method can be called by any of the view classes
        and it's functions to be able to change the screen
        when the user clicks on any if it's list objects or
        buttons

        '''
        pass
        blah=()
        class_temp = views.billing(blah)
        self.grid.addLayout(class_temp.grid, 0, 1)

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    gui()
    print "executed gui"
    sys.exit(app.exec_())

1 个答案:

答案 0 :(得分:0)

你没有为gui设置任何变量。

window = gui()
window.show()

通常,您希望主窗口作为主要对象。所以gui可能想继承QMainWindow。

class Gui(QtGui.QMainWindow):

    def __init__(self):
        super(Gui, self).__init__()

        self.widget = QtGui.QWidget()
        self.grid = QtGui.QGridLayout()
        self.widget.setLayout(self.grid

        self.setCentralWidget(self.widget)
        ...

您可以做的另一件事是将所有项目添加到布局中,只需隐藏/显示您要使用的项目。这可能比单击按钮时创建另一个视图更容易。