다른 기능이 실행되는 동안 내 pyside 프로그램의 시작 부분에 로딩 그래픽 (현재 레이블 만 있음)을 표시하려고합니다. 작업이 끝나면 계속 진행하고 기본 GUI를로드해야합니다. 나는이 지금까지스레딩을 사용하여 PySide에서 로딩 표시 만들기
from PySide import QtCore
from PySide import QtGui
class DoStuff:
def __init__(self):
pass
def ReturnInformation(self):
time.sleep(20) #Sleep to simulate processing time
return "information"
class Main(QtGui.QWidget):
def __init__(self):
super(Main, self).__init__()
self.initQ = queue.Queue()
self.initthread = threading.Thread(target=self.InitThread)
self.initthread.daemon = True
self.initthread.start()
self.setStyleSheet("background-color: black;")
self.setCursor(QtCore.Qt.BlankCursor)
self.loaddisplay = QtGui.QLabel(self)
self.loaddisplay.move(20, 20)
self.loaddisplay.setText("Loading...")
self.show()
self.initthread.join()
self.MainDisplay()
self.show()
def InitThread(self):
self.dostuff = DoStuff()
def MainDisplay(self):
self.display = QtGui.QLabel(self)
self.display.setStyleSheet("font: 70pt Helvetica; color: white;")
self.display.move(20, 20)
self.display.setText(self.dostuff.ReturnInformation())
self.manager = QtCore.QTimer(self)
self.manager.timeout.connect(self.Update)
self.manager.start(100000)
def Update(self): #Update the information once in a while
self.timedisplay.setText(self.dostuff.ReturnInformation())
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
GUI = Main()
sys.exit(app.exec_())
문제는 부하 그래픽이 표시되고 MainDisplay()
에서 GUI가 표시되지 않습니다 것입니다 있습니다. 나는 이것이 내가 어떻게 show()
함수라고 부르는 지와 관련이 있다고 확신한다. 그게 문제이며, 어떻게 고칠 수 있습니까?
또한로드가 끝나면 어떻게로드 라벨을 삭제할 수 있습니까?
P. (나는이 질문을하기 전에 물어 보았지만 아무런 대답이나 코멘트가없고 낮은보기가있어서 삭제하고 질문을 다시한다.)
당신은 InitThread 및 MainDisplay의 구현을 표시해야합니다. – eyllanesc
시간, 날씨, 뉴스는 무엇입니까? 당신은 검증 할 수있는 무엇을 의미하는지 이해합니다. – eyllanesc
이 유형의 문제는 응답 할 가능성이없는 경우 복제 할 수있는 코드를 제공해야하며 github 또는 유사품을 통해 프로젝트를 공유하거나 실행될 수있는 코드를 공유 할 수 있어야합니다. – eyllanesc