我有两个不同的小部件,一个QMainWindow和另一个Qwidget,如图所示。因此,当我单击“确定”按钮时,我要QmainWindow做某事。
这是屏幕截图
pm_main_window.py
from PySide.QtGui import *
from PySide.QtCore import *
import os,sys
import pm_create_personal as pm_CreatePersonal
import pm_select_path as pm_selectPath
class projectManagerCentralWidget(QWidget):
def __init__(self):
super(projectManagerCentralWidget, self).__init__()
self.projectComboMenu = QComboBox()
self.projectComboMenu.setFixedWidth(175)
self.shotList = QListWidget()
self.shotList.setFixedWidth(175)
items = ["Shot001", "Shot002", "Shot003"]
self.shotList.addItems(items)
self.searchInShot = QLineEdit()
self.searchInShot.setFixedWidth(175)
self.searchInShot.setPlaceholderText("Search Shot")
self.saveAs = QPushButton("Save As")
self.saveAs.setFixedWidth(120)
self.saveAs.clicked.connect(self.strr)
self.openAs = QPushButton("Open")
self.openAs.setFixedWidth(120)
self.importBtn = QPushButton("Import")
self.importBtn.setFixedWidth(120)
self.personal = QComboBox()
self.personal.addItem("Name Here!")
self.personal.setFixedWidth(175)
self.compFileListTree = QTreeWidget()
self.compFileListTree.setHeaderLabels(["Comp Name","Operator","Starting Date", "Comment"])
self.mainLayout = QHBoxLayout()
self.projectListLayout = QVBoxLayout()
self.projectListLayout.addWidget(self.projectComboMenu)
self.projectListLayout.addWidget(self.shotList)
self.projectListLayout.addWidget(self.searchInShot)
self.openClosePersonLayout = QHBoxLayout()
self.openClosePersonLayout.addWidget(self.saveAs)
self.openClosePersonLayout.addWidget(self.openAs)
self.openClosePersonLayout.addWidget(self.importBtn)
self.openClosePersonLayout.addWidget(self.personal)
self.mainLayout.addLayout(self.projectListLayout)
self.buttonsPersonCompsLayout = QVBoxLayout()
self.buttonsPersonCompsLayout.addLayout(self.openClosePersonLayout)
self.buttonsPersonCompsLayout.addWidget(self.compFileListTree)
self.mainLayout.addLayout(self.buttonsPersonCompsLayout)
self.setLayout(self.mainLayout)
def strr(self):
pass
# sR = open("F:/selectedRoot.txt", "r")
# readProjectPath = sR.readline()
# print "ComboBox Root :" + readProjectPath
# listOfCombo = os.listdir(readProjectPath)
# for comboList in listOfCombo:
# self.projectComboMenu.addItems([comboList])
# print "Project list: " + comboList
class projectManager(QMainWindow):
def __init__(self):
super(projectManager, self).__init__()
self.setCentralWidget(projectManagerCentralWidget())
topMenuBar = self.menuBar()
exitAction = QAction("&Exit",self)
exitAction.setShortcut("ESC")
exitAction.triggered.connect(self.close)
createPerson = QAction("&Create Person", self)
createPerson.triggered.connect(pm_CreatePersonal.startCP)
createPerson.setShortcut("C")
slctProjectPath = QAction("&Change Root", self)
slctProjectPath.setShortcut("S")
slctProjectPath.triggered.connect(pm_selectPath.startSP)
fileMenu = topMenuBar.addMenu("&File")
fileMenu.addAction(slctProjectPath)
fileMenu.addAction(createPerson)
fileMenu.addAction(exitAction)
helpMenu = topMenuBar.addMenu("&Help")
self.statusBar().showMessage("Project Root: 'X:\PROJECTS\Deliler_fw21845'")
def startPM_MainWindow():
startPM_MainWindow.pmWin = projectManager()
startPM_MainWindow.pmWin.setWindowTitle("1000Volt: Project Manager for Nuke")
startPM_MainWindow.pmWin.setMinimumSize(650, 500)
startPM_MainWindow.pmWin.show()
pm_select_path.py
from PySide.QtGui import *
import os
class pm_selectProjectPath(QWidget):
def __init__(self):
super(pm_selectProjectPath, self).__init__()
self.selectionPath = QLineEdit()
self.selectPath = QPushButton("Select")
self.selectPath.clicked.connect(self.selectDirAndCreateDB)
self.OKAY = QPushButton("Ok")
self.OKAY.clicked.connect(self.closePanel)
self.Layout = QHBoxLayout()
self.Layout.addWidget(self.selectionPath)
self.Layout.addWidget(self.selectPath)
self.Layout.addWidget(self.OKAY)
self.setLayout(self.Layout)
def selectDirAndCreateDB(self):
selected_dir = QFileDialog.getExistingDirectory()
print "Your project 'ROOT' is ::: " + selected_dir
try:
self.selectionPath.setText(selected_dir)
sR = open("F:/selectedRoot.txt", "w")
except:
print "There is an Error!"
if os.path.isfile("F:/selectedRoot.txt"):
sR.write(selected_dir + "/")
sR.close()
else:
print "Ther no writable directory!"
def closePanel(self):
self.close()
def startSP():
startSP.pmPWindow = pm_selectProjectPath()
startSP.pmPWindow.setWindowTitle("Select Root")
startSP.pmPWindow.setFixedWidth(500)
startSP.pmPWindow.show()
pm_create_personal.py
from PySide.QtGui import *
import sys
class pmPersonalCreation(QWidget):
def __init__(self):
super(pmPersonalCreation, self).__init__()
self.personName = QLineEdit()
self.personName.setPlaceholderText("Name / Surname")
self.personPass = QLineEdit()
self.personPass.setPlaceholderText("Password")
self.personTitle = QLineEdit()
self.personTitle.setPlaceholderText("employee title")
self.personList = QTreeWidget()
self.personList.setHeaderLabels(["Name", "Project"])
self.createButton = QPushButton("Create")
self.cencelBtn = QPushButton("Cencel")
self.cencelBtn.clicked.connect(self.closeBtn)
self.mainLayout = QVBoxLayout()
self.mainLayout.addWidget(self.personName)
self.mainLayout.addWidget(self.personPass)
self.mainLayout.addWidget(self.personTitle)
self.btnLay = QHBoxLayout()
self.btnLay.addWidget(self.createButton)
self.btnLay.addWidget(self.cencelBtn)
self.mainLayout.addLayout(self.btnLay)
self.mainLayout.addWidget(self.personList)
self.setLayout(self.mainLayout)
def closeBtn(self):
self.close()
def startCP():
startCP.pmPWindow = pmPersonalCreation()
startCP.pmPWindow.setWindowTitle("Create Personal")
startCP.pmPWindow.show()
我在核武器工作中可以添加QApplicaiton参数。另外,当我单击 pm_select_path 小部件中的“确定”按钮时,我还想让我的 QMainWindow 做某事。我想连接两个不同的.py小部件。 另外,我应该使用哪种方法? thnax。