버튼 클릭으로 함수를 호출 할 때 내 프로그램을 고정시키지 않으려는 문제가 있습니다. 이 함수는 subprocess.Popen을 사용하여 .bat 파일을 엽니 다.하지만 .bat가 실행되는 동안 내 전체 GUI가 정지되며 사용자가 GUI를 계속 사용할 수 있기를 바랍니다. 나는 꽤 스레딩을 처음 접했습니다. 스레딩은이 문제를 해결하는 하나의 방법이라는 것을 이해합니다.하지만 단추를 클릭 할 때마다이 함수를 호출하는 스레드를 어떻게 만드는지는 불확실합니다. 내 기능은 QtDesigner가 만든 창 안에 있다는 것을 명심하십시오. 이 문제를 해결할 수있는 아이디어 나 방법은 무엇입니까? 어쩌면 내가 대답을 찾을 수있는 곳으로 나를 인도 할까?함수 -PyQt GUI 스레딩
메인 클래스 이름 :
클래스 Ui_TestClass (객체) :
내 기능 :
def runprogram(self):
dir = self.cwdList[-1]
test = os.listdir(dir)
for item in test:
if item.endswith('.OUT'):
os.remove(join(dir, item))
new, ok = QInputDialog.getText(None, "Case Name","Type in a case name to run. (No Spaces) \nOn file dialog, choose file to rename.")
if (ok):
newcase = new
changename = str(QtWidgets.QFileDialog.getOpenFileName(None, 'Choose file', '{0}'.format(self.cwdList[-1]), 'Text files (*.ZCSP*)')[0])
shutil.move(changename, '{0}\{1}.ZCSP'.format(self.cwdList[-1], newcase))
self.replaceText('{0}.ZCSP'.format(newcase))
with open('Test.bat', "w") as runname:
run = 'ZCSP {0}.ZCSP {0}.OUT'.format(newcase, newcase)
runname.write(run)
process = subprocess.Popen([r"{0}\Test.bat".format(self.cwdList[-1])])
process.wait()
self.cwdList이 디렉토리의 단지 목록입니다
t = threading.Thread(target=self.runprogram)
t.start()
이 방법이 효과가있을 수도 있지만 QtDesigner에서 만든 코드에 어떻게 삽입합니까?