패널이나 위젯을 만드는 방법이 확실하지 않습니다. 플레이어가 무언가를 클릭 할 때 나타납니다.정보를 문맥 상 PySide에 표시하는 방법은 무엇입니까?
Qt 디자이너에서 위젯을 만들고 show()/hide()를 사용했지만 show(); 숨는 장소(); show() 두 번째 show 문이 작동하지 않고 아무 것도 그려지지 않습니다.
gridLayout에 삽입하면 전체 격자가 50/50으로 분할되어 패널에 최대 크기를 설정할 수 없으며 레이아웃에서 위젯을 제거 할 수 없다는 문제가 있습니다. 분할을 100 %로 다시 변경하십시오. stackoverflow를 검색했지만 찾을 수있는 모든 것은 표시해야하는 제안()/숨김()으로 광고 된대로 작동하지 않는 것 같습니다. 다른 사람이 통찰력을 가지고 있습니까? 그것은 쉽게 할 수있는 무언가 같이 보인다.
추신 : 나는 그것이 쓸모있는 한 어떻게 보이는지 상관하지 않습니다. 이 프로젝트의 목표 중 일부는 게임을 가능한 한 빨리, 못생긴 정도로 구축하는 것입니다.
편집 : 요청에 의해 추가 테스트 케이스 ... 나는 그러나 Qt는 디자이너/QML 로딩없이 작성 시험의 경우에 재현하는 문제를 얻을 수 없었습니다
class GameWindow(QtGui.QWidget):
def __init__(self):
super(GameWindow, self).__init__()
# Load ui file.
loader = QtUiTools.QUiLoader()
file_ = QtCore.QFile("forms/GameWindow.ui")
file_.open(QtCore.QFile.ReadOnly)
self = loader.load(file_,self)
# Add viewport.
self.viewport = GameViewport(self)
self.gridLayout.addWidget(self.viewport, 0, 0)
self.horizontalScrollBar.valueChanged.connect(self.viewport.update)
self.verticalScrollBar.valueChanged.connect(self.viewport.update)
# Add planetDetails
self.planetDetails = PlanetDetails(None)
# Show and perform initial draw.
self.show()
class GameViewport(QtGui.QWidget):
def __init__(self,parent):
super(GameViewport,self).__init__()
self.parent = parent
def mousePressEvent(self,event):
self.parent.planetDetails.set_planet(None)
class PlanetDetails(QtGui.QWidget):
def __init__(self,parent):
super(PlanetDetails, self).__init__()
self.parent = parent
self.planet = None
# Load ui file.
loader = QtUiTools.QUiLoader()
file_ = QtCore.QFile("forms/PlanetDetails.ui")
file_.open(QtCore.QFile.ReadOnly)
self = loader.load(file_,self)
self.pushButton.clicked.connect(self.hide)
def set_planet(self, planet):
self.planet = planet
self.show()
.
"작동하지 않는"코드를 붙여야합니다. 당신이하고있는 것을 보지 않고서는 문제를 정확하게 지적하기가 어렵습니다. 'show/hide'와'QGridLayout'는 확실히 예상대로 동작합니다. – Avaris
테스트 케이스가 추가되었습니다. QGridLayout이 QGridLayout 대신 무엇을 사용해야하는지에 따라 동작해야한다면 필요한 동작을 얻으려고합니까? – Tarinaky
아니요. QGridLayout은 원하는대로 동작합니다. 단일 항목으로 100 % 소요됩니다. 둘 이상으로 크기 정책에 따라 나눕니다. 나는 당신의 코드를 실행하고 관찰하기 위해 여전히'* .ui' 파일이 필요하다. 그러나'self = loader.load (file_, self)'행은 의심스러워 보인다. 위젯의 부모를 스스로 설정하고 있습니다. – Avaris