关闭Pyside上的最后一个应用程序

时间:2015-01-07 14:15:06

标签: python python-2.7 pyside 3dsmax

我是Pyside的新人,我正在尝试为3DsMax 2015创建插件。现在我遇到了取消按钮的问题

我有一个"主要表格"

enter image description here

当我点击"添加新对象"时,我将显示新表单。我们可以称之为" Sub Form"

enter image description here

当我点击按钮"取消" ,所有应用程序都退出,3Dsmax2 015也。 我只想退出" Sub Form"。

这是我的代码:

from PySide import QtGui,QtCore
import MaxPlus
import sys

class _GCProtector(object):
    widgets = []

app = QtGui.QApplication.instance()
if not app:
    app = QtGui.QApplication([])

def main():     
    MaxPlus.FileManager.Reset(True)
    w = QtGui.QWidget()

    w.setFixedSize(300,360)
    w.setWindowTitle('Library')
    _GCProtector.widgets.append(w)
    w.show()

    main_layout = QtGui.QGridLayout()
    main_layout.addWidget(First(),0,0,2,0)
    w.setLayout(main_layout)

def First():
    # FIRST FRAME
    FirstFrame = QtGui.QFrame()
    FirstFrame.setMaximumWidth(230)
    FirstFrame.setMaximumHeight(700)
    # LABEL RENDERER
    renderer_lb  = QtGui.QLabel("Renderer :")

    # COMBOBOX RENDERER
    renderer_cbx = QtGui.QComboBox()
    renderer_cbx.addItem("Vray")
    renderer_cbx.addItem("Octane")

    # LABEL FOLDER
    folders_lb = QtGui.QLabel("Folder :")

    # LIST VIEW FOLDER
    folders_lv = QtGui.QListView()

    # BUTTON ADD NEW OBJECTS
    addnewobject_btn = QtGui.QPushButton("Add New Objects")

    # BUTTON NEW SET
    newset_btn = QtGui.QPushButton("New Set")

    # DEFINE THE FUNCTION FOR FIRST FRAME
    Firstbox = QtGui.QGridLayout()
    Firstbox.addWidget(renderer_lb,0,0)
    Firstbox.addWidget(renderer_cbx,0,1,1,3)
    Firstbox.addWidget(folders_lb,2,0,1,4)
    Firstbox.addWidget(folders_lv,3,0,1,4)
    Firstbox.addWidget(addnewobject_btn,4,0,1,2)
    Firstbox.addWidget(newset_btn,4,3)
    Firstbox.setColumnStretch(1, 1)
    FirstFrame.setLayout(Firstbox)

    #++++++++++++++++++++ COMMAND ++++++++++++++++++++
    addnewobject_btn.clicked.connect(addnewobject)
    newset_btn.clicked.connect(newset)
    return FirstFrame
    #---------------------------------------------------------------------
def addnewobject():
    w = QtGui.QWidget()
    w.setFixedSize(450,90)
    w.setWindowTitle('Select folder of new objects')
    _GCProtector.widgets.append(w)
    w.show()

    # LABEL FOLDER
    folder_lb = QtGui.QLabel("Folder : ")

    # TEXT EDIT OF LINK FOLDER
    linkfolder_txt = QtGui.QLineEdit()

    # BUTTON BROWSE
    browse_btn=QtGui.QPushButton("Browse...")

    # LABEL EXAMPLE
    ex_lb = QtGui.QLabel("( ex : SCH, faucet, K7 )")

    # BUTTON CANCEL
    cancel_btn = QtGui.QPushButton("Cancel")

    # BUTTON OK
    ok_btn = QtGui.QPushButton("OK")

    # DEFINE THE FUNCTION FOR ADD NEW OBJECT WIDEGET
    browser = QtGui.QGridLayout()
    browser.addWidget(folder_lb,0,0)
    browser.addWidget(linkfolder_txt,0,1,1,4)
    browser.addWidget(browse_btn,0,5)
    browser.addWidget(ex_lb,1,0,1,5)
    browser.addWidget(cancel_btn,2,4)
    browser.addWidget(ok_btn,2,5)
    browser.setColumnStretch(1, 1)
    w.setLayout(browser)

    #++++++++++++++++++++ COMMAND ++++++++++++++++++++
    cancel_btn.clicked.connect(quitApp)
    #---------------------------------------------------------------------

def quitApp():
        quit()

if __name__ == '__main__':
    main()

请告诉我如何使用#34; Main Form"当"子表格"打开,导致"子表格"打开了,我仍然可以推动"添加新对象"在"主要表格"它打开了许多"子表格"。

非常感谢。

1 个答案:

答案 0 :(得分:1)

您只需将按钮连接到小部件的close slot

即可
    def addnewobject():
        w = QtGui.QWidget()
        ...
        cancel_btn.clicked.connect(w.close)