2015-01-13 1 views
0

나는 Pyside의 새로운 남자이고,이 프로젝트를 3Dsmax에서 실행할 수 있습니까?QFileDialog.getExistingDirectory는 어떻게됩니까?

이 코드에 대한 나의 문제점은 다음과 같습니다. "browse_btn"버튼을 누르면 "def browse" . 아무 반응이 없습니다. 나는 모든 사람이 나에게 몇 가지 조언을 줄 수 있기를 바랍니다

def addnewobject(): 
     w = QtGui.QWidget() 
     w.setFixedSize(450,90) 
     w.setWindowTitle('Select folder of new objects') 
     _GCProtector.widgets.append(w) 
     w.show() 

     folder_lb = QtGui.QLabel("Folder : ") 
     directoryComboBox = QtGui.QComboBox(QtCore.QDir.currentPath()) 
     browse_btn=QtGui.QPushButton("Browse...",browse()) 
     cancel_btn = QtGui.QPushButton("Cancel") 
     ok_btn = QtGui.QPushButton("OK") 

     browser = QtGui.QGridLayout() 
     browser.addWidget(folder_lb,0,0) 
     browser.addWidget(directoryComboBox,0,1,1,4) 
     browser.addWidget(browse_btn,0,5) 
     browser.addWidget(cancel_btn,2,4) 
     browser.addWidget(ok_btn,2,5) 
     browser.setColumnStretch(1, 1) 
     w.setLayout(browser) 

     cancel_btn.clicked.connect(w.close) 

    def browse(): 
     directory = QtGui.QFileDialog.getExistingDirectory("Find Files",QtCore.QDir.currentPath()) 

     if directory: 
      if directoryComboBox.findText(directory) == -1: 
       directoryComboBox.addItem(directory) 

      directoryComboBox.setCurrentIndex(directoryComboBox.findText(directory)) 

:

내 코드입니다. 감사합니다

답변

0

일을 더 쉽게하려면 클래스를 사용하도록 코드를 다시 구성해야합니다. 그렇게하면 self을 사용하여 다른 방법으로 하위 위젯에 액세스 할 수 있습니다.

class Widget(QtGui.QWidget): 
    def __init__(self, parent=None): 
     super(Widget, self).__init__(parent) 
     self.setFixedSize(450, 90) 
     self.setWindowTitle('Select folder of new objects') 

     self.folder_lb = QtGui.QLabel("Folder : ") 
     self.directoryComboBox = QtGui.QComboBox() 
     self.directoryComboBox.addItem(QtCore.QDir.currentPath()) 
     self.browse_btn = QtGui.QPushButton("Browse...") 
     self.cancel_btn = QtGui.QPushButton("Cancel") 
     self.ok_btn = QtGui.QPushButton("OK") 

     browser = QtGui.QGridLayout() 
     browser.addWidget(self.folder_lb, 0, 0) 
     browser.addWidget(self.directoryComboBox, 0, 1, 1, 4) 
     browser.addWidget(self.browse_btn, 0, 5) 
     browser.addWidget(self.cancel_btn, 2, 4) 
     browser.addWidget(self.ok_btn, 2, 5) 
     browser.setColumnStretch(1, 1) 
     self.setLayout(browser) 

     self.browse_btn.clicked.connect(self.browse) 
     self.cancel_btn.clicked.connect(self.close) 

    def browse(self): 
     directory = QtGui.QFileDialog.getExistingDirectory(
      self, "Find Files", QtCore.QDir.currentPath())  
     if directory: 
      if self.directoryComboBox.findText(directory) == -1: 
       self.directoryComboBox.addItem(directory) 
      self.directoryComboBox.setCurrentIndex(
       self.directoryComboBox.findText(directory)) 

을하고이처럼 사용할 수 있습니다 :

def addnewobject(): 
    widget = Widget() 
    widget.show() 
    _GCProtector.widgets.append(widget) 
다음

클래스가 보일 수 있습니다 방법입니다

관련 문제