2017-09-08 16 views
1

QLabelをHTMLサブセットと共にQWidgetに配置すると、QLabelがカスタムウィジェットまたはメインウィンドウまたはレイアウトにあるかどうかによって、異なるタイプの動作が発生します。サブセットHTML QLabel、高さの動作を理解できない

主な問題は、htmlテーブルのすべての行が表示されないことです。内容は高さが細かくなっています。

私は、HTMLサブセットでは 'height'属性がサポートされていないことが奇妙なことを発見しました。ここ

はコードです:以下

import sys 
from PyQt5.QtWidgets import * 
from PyQt5.QtGui import * 
from PyQt5.QtCore import QCoreApplication, QRect, Qt 

class Labhtml(QLabel): 

    def __init__(self, parent): 
     super().__init__(parent=parent) 

     html = (''' 
      <body> 
      <table> 
      <tr> 
       <td id="header_cell" width="200"> 
        <div id="ticker"><!--INST.T--></div> 
        <div id="price"> 1000.25<!--price--></div> 
       </td> 
      </tr> 

      <tr> 
       </td> 
       <td id="values_cells"> 
        <div id="value"> +0.23%<!--value02--></div> 
        <div id="average"> 0.13%<!--range02--></div> 
       </td> 
      </tr> 
      </table> 
      </body> 
      </html> 

      ''') 

     label = QLabel(html, self) 
     self.setStyleSheet('QFrame {background-color: grey;}') 

     self.resize(100, 150) 


class Wid(QWidget): 
    def __init__(self, parent): 
     super().__init__(parent=parent) 

     self.resize(100, 450) 
     Labhtml(self) 

     layout = QVBoxLayout(self) 
     layout.setAlignment(Qt.AlignTop) 

     layout.setSpacing(0) 


class Example(QScrollArea): 
    def __init__(self): 
     super().__init__() 

     widget = QWidget() 
     layout = QVBoxLayout(widget) 
     layout.setAlignment(Qt.AlignTop) 

     Labhtml(widget) 
     layout.addWidget(Wid(widget)) 
     layout.addWidget(Labhtml(widget)) 


     self.setWidget(widget) 
     self.setWidgetResizable(True) 

     self.show() 


if __name__ == '__main__': 

    app = QApplication(sys.argv) 
    ex = Example() 
    sys.exit(app.exec_()) 
+1

あなたはQTextEditを使用してみました、私はそういまいましい、これはアドバイスの非常に良い作品です、それはあなたのアプリケーション – eyllanesc

+0

@eyllanescのためのより適切だと思います、ありがとう。私はなぜラベルが – user3755529

+0

@ user3755529で頑固になったのかわかりません。この質問はまだ関連していますか?あなたがまだ興味を持っていれば、私はあなたの例を修正することができました。 – ekhumoro

答えて

1

正常に動作しているようですあなたの例の固定されたバージョンです。うまくいけば、あなたは私がしなければならなかった変更内容を確認することができます:?

import sys 
from PyQt5.QtWidgets import * 
from PyQt5.QtGui import * 
from PyQt5.QtCore import QCoreApplication, QRect, Qt 

class Labhtml(QLabel): 
    def __init__(self, parent): 
     super().__init__(parent=parent) 
     html = (''' 
      <body> 
      <table> 
      <tr> 
       <td id="header_cell" width="200"> 
        <div id="ticker"><!--INST.T--></div> 
        <div id="price"> 1000.25<!--price--></div> 
       </td> 
      </tr> 
      <tr> 
       <td id="values_cells"> 
        <div id="value"> +0.23%<!--value02--></div> 
        <div id="average"> 0.13%<!--range02--></div> 
       </td> 
      </tr> 
      </table> 
      </body> 
      </html> 
      ''') 
     self.setText(html) 
     self.setStyleSheet('QFrame {background-color: grey;}') 

class Wid(QWidget): 
    def __init__(self, parent=None): 
     super().__init__(parent=parent) 
     label = Labhtml(self) 
     layout = QVBoxLayout(self) 
     layout.setContentsMargins(0, 0, 0, 0) 
     layout.setAlignment(Qt.AlignTop) 
     layout.addWidget(label) 
     layout.setSpacing(0) 

class Example(QScrollArea): 
    def __init__(self): 
     super().__init__() 
     widget = QWidget() 
     layout = QVBoxLayout(widget) 
     layout.setAlignment(Qt.AlignTop) 
     layout.addWidget(Wid(widget)) 
     layout.addWidget(Labhtml(widget)) 
     self.setWidget(widget) 
     self.setWidgetResizable(True) 
     self.show() 

if __name__ == '__main__': 

    app = QApplication(sys.argv) 
    ex = Example() 
    ex.show() 
    sys.exit(app.exec_()) 
+0

ああ、私はとても面倒です、ありがとう – user3755529

関連する問題