필자는이 주제에 대해 적절한 '질문'을 생각하는 것보다 오래 머물렀다. 내 문제는 명확하게 표현하기가 어렵 기 때문에.Python/PySide에서 클래스 메서드 호출하기
- 내가
- 내가 특정 파일
- 파일을 모니터링 할 수 QFileSystemWatcher을 사용하고 파이썬 3.4 PySide와 기본 GUI를 쓰고 있어요 : 여기 상황의 빠른 요약 한 것입니다 QFileSystemWatcher가 메서드를 호출하면 PySide 클래스 내의 메서드가 호출됩니다.
- PySide 클래스 메서드에 설명 된 GUI 관련 작업이 실행되고 있지 않다는 것을 제외하고는 위의 모든 작업이 완벽하게 작동하는 것처럼 보입니다. 자세한 내용은 아래에서 설명합니다).
예제 코드 : 제가 위에서 언급 한 바와 같이
#Establishing the PySide GUI Class
class GUI(QMainWindow, Ui_GUI):
def __init__(self, parent=None)
super(GUI, self).__init__(parent)
self.setupUi(self)
QtCore.QObject.connect(self.Button, QtCore.SIGNAL("clicked()"), self.Run)
def Run(self):
print("1")
self.treeWidget1.clear()
self.treeWidget2.clear()
print("2")
self.label1.setText("Text 1")
self.label2.setText("Text 2")
print("3")
for y in range(0, 5):
self.treeWidget1.resizeColumnsToContents()
print("Finished")
#Establish the file monitoring mechanism, *outside* the PySide class
def FileChanged():
Script = GUI()
Script.Run()
Paths = ['path/to/file']
Watch = QtCore.QFileSystemWatcher(Paths)
Watch.fileChanged.connect(FileChanged)
#Setting up the GUI
if __name__ == '__main__':
app = QApplication(sys.argv)
showGUI = GUI()
showGUI.show()
app.exec_()
, 위의 코드는 오류를 반환하지 않습니다. (경로에 나열된) 파일을 변경하면 FileChanged는 실제로 GUI 클래스에서 Run() 메서드를 호출합니다. 그러나 실제로는 을 수행하지 않고 'stuff'중 하나를으로 처리합니다. 'stuff'사이에서만 인쇄 명령을 실행합니다.
GUI의 '버튼'을 클릭하면 Run()이 올바르게 실행되고 모든 'stuff'가 올바르게 실행됩니다.
내 질문 : 여기에 뭔가 빠졌습니까? 메소드를 올바르게 호출하고 다양한 'print'명령을 실행할 수 있다면, 실제 'stuff'를 실행하지 않는 이유는 무엇입니까?
감사합니다.
편집 1 : 나는 do-stuff-tags를 제거하고 몇 가지 예제 코드를 넣었습니다. 모든 'stuff'코드는 다양한 PySide QLabels, QTreeWidgets 등을 업데이트하는 것과 관련이 있습니다.
EDIT 2 : treeWidget clear 명령 끝에()를 잊어 버립니다.
1, 2 및 3을 인쇄하지만 물건을 수행하지 않으면 물건의 상태를 보여줘야합니다. 그들이 탓할 가능성이 가장 큽니다. – 101
그 정도면 충분하지만 작동하지 않는다면 오류가 발생했을 것입니다. 적어도 실행을 멈추게하여 다음 '인쇄'를 인쇄하지 못하게 할 수 있습니까? 모든 'stuff'명령은 QTreeWidgets 지우기, QLabel 채우기 등과 관련됩니다. – jars121
완전히 해당 코드에 따라 다릅니다. 예외를 발생시키지 않고 원하는 코드를 쉽게 할 수 있습니다! – 101