Python 关闭Pyside上的最后一个应用程序
我是Pyside的新人,我正在尝试为3DsMax 2015创建插件。现在我有一个取消按钮的问题 我有一个“主窗体” 当我单击“添加新对象”时,我将显示新表单。我们可以称之为“子表单” 当我点击“取消”按钮时,所有应用程序都退出,3Dsmax2 015也退出。 我只想退出“子表单” 这是我的代码:Python 关闭Pyside上的最后一个应用程序,python,python-2.7,pyside,3dsmax,Python,Python 2.7,Pyside,3dsmax,我是Pyside的新人,我正在尝试为3DsMax 2015创建插件。现在我有一个取消按钮的问题 我有一个“主窗体” 当我单击“添加新对象”时,我将显示新表单。我们可以称之为“子表单” 当我点击“取消”按钮时,所有应用程序都退出,3Dsmax2 015也退出。 我只想退出“子表单” 这是我的代码: from PySide import QtGui,QtCore import MaxPlus import sys class _GCProtector(object): widgets
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()
请告诉我如何在“子窗体”打开时不可用“主窗体”,因为当“子窗体”打开时,我仍然可以在“主窗体”上推“添加新对象”,它会打开许多“子窗体”
非常感谢。您只需将按钮连接到小部件的:
为什么要使用
quitApp
作为它的活动?我想这只是一个名字,我只是一个新人,所以我不明白,我遵循了教程。非常感谢你们,我的代码现在可以运行了,跟随你们的评论。
def addnewobject():
w = QtGui.QWidget()
...
cancel_btn.clicked.connect(w.close)