2013-03-16 1 views
1

이것이 내 첫 번째 질문입니다. 가능한 한 명확 해지기를 바랍니다.PyQt 디자인 : 다른 위젯으로 감싸 진 부동 위젯

두 개의 내부 요소가있는 위젯이 있습니다. 위젯은 오른쪽 상단에 있어야하고, 위젯 B는 첫 번째 줄을 감싸 야합니다 (내부 텍스트가 WidgetA 아래에 있어야 함).

이것은 내가 달성하기 위해 노력하고있어입니다 :

________________________ 
| _________  _____ | 
| | B | | A | | 
| | some | |___| | 
| | text |--------- | 
| | should go here | | 
| |_________________| | 
|______________________| 
  • 나는 하루 종일 수색하지만 내 경우와 일치시킬 수 있습니다 아무것도 찾을 수 없습니다.
  • 나는 FlowLayout을 만들려고했지만 여전히 원하는 것은 아닙니다.
  • QLabel에 HTML과 CSS를 넣으려고했는데, PyQt에서 float (Nokia, 부끄러운 줄 아세요!)에 대한 지원이 없다는 것을 알았습니다.
  • 커스텀 빌드를 시작했습니다. QGraphicsView + QGraphicsItem, 그러나 그것은 나에게는 조금 어렵다. 아마도 더 간단한 해결책이 있기를 바란다.

어떤 레이아웃을 사용 하시겠습니까? 내 레이아웃을 직접 작성해야합니까?

내 특별한 경우 WidgetA는 QPixmap이있는 QLabel이고 WidgetB는 QFormLayout입니다 (이제는 위젯이 아니지만이 방법으로 다른 사용자에게 도움이 될 것이라고 생각했습니다) .

나는 코드 예제를 만들었지 만 이것은 더 많은 디자인 질문이며 코드가별로 중요하지 않을 수도 있습니다.

from PyQt4 import QtGui, QtCore 

class MyWidget(QtGui.QWidget): 
    def __init__(self, parent=None): 
     super(MyWidget, self).__init__(parent) 

     self.layout = QtGui.QVBoxLayout() 

     self.hLayout = QtGui.QHBoxLayout() 

     self.smallLabel = QtGui.QLabel("small small") 

     self.longLabel = QtGui.QLabel(''' 
      very very very very very very very 
      very very very very very very very 
      very very very very very very very 
      long label''') 
     self.longLabel.setWordWrap(True) 

     self.hLayout.addWidget(self.longLabel) 
     self.hLayout.addWidget(self.smallLabel) 


     self.layout.addLayout(self.hLayout) 

     self.setLayout(self.layout) 

# I run this in Maya, so I don't care about __main__ and apps  
w = MyWidget() 
w.show() 

고마워요!

답변

1

QWebView을 사용해 보셨습니까? 이것은 Webkit 기반 브라우저 위젯으로, 정적 HTML을 표시하는 데 사용할 수도 있습니다. 이것은 CSS와 HTML의 대부분을 지원해야합니다.

+0

내 파이썬에 QtWebKit이 내장되어 있지 않은 것처럼 보입니다. 시도하기 전에 컴파일해야합니다. 팁 고마워! – doruchan

+0

감사합니다. QWebView로 해결했습니다! – doruchan

관련 문제