1

Python と Pyqt では、Label クラスと GroupBox クラスをインスタンス化する単純なクラスがあります。

ドキュメントによると、作成時にグループボックスをラベルに渡すと、グループボックスがラベルの親になるはずです。ただし、ここでは単純なものが欠けているに違いありません。GroupBox を作成すると問題ありませんが、Label を作成すると、歪んで表示されます (または、GroupBox の背後にある可能性があります)。

乾杯 -

from PyQt4.QtCore import * 
from PyQt4.QtGui import *
import sys


class FileBrowser(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)

        self.setGeometry(0, 0, 920, 780)
        self.initClasses()

    def initClasses(self):
        # GroupBox
        self.groupBox1 = GroupBox(self, QRect(20, 10, 191, 131),  'Shot Info')

        # Label
        self.labelGroup1_ShotInfo = Label(self, QRect(10, 26, 52, 15),  'Film')


class GroupBox(QWidget): 
    def __init__(self, parent,  geo,  title): 
        QWidget.__init__(self, parent)
        obj = QGroupBox(parent)
        obj.setGeometry(geo)
        obj.setTitle(title)

class Label(QWidget): 
    def __init__(self, parent,  geo,  text): 
        QWidget.__init__(self, parent)
        obj = QLabel(parent)
        obj.setGeometry(geo)
        obj.setText(text)



def main(): 
    app = QApplication(sys.argv) 
    w = FileBrowser() 
    w.show() 
    sys.exit(app.exec_()) 

if __name__ == "__main__": 
    main()
4

1 に答える 1

2

問題は、レイアウトを使用していないことです。どちらも使用していないため、両方のウィジェットが重ねてレンダリングされています。もちろん、何をしようとしているのかによって異なりますが、以下は良い例です。

class FileBrowser(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)

        self.setGeometry(0, 0, 920, 780)
        self.initClasses()
        # changes
        layout = QVBoxLayout(self) # create layout out
        layout.addWidget(self.groupBox1) # add widget
        layout.addWidget(self.labelGroup1_ShotInfo) # add widget
        # set my layout to make sure contents are correctly rendered
        self.setLayout(layout) 

    def initClasses(self):
        # GroupBox
        self.groupBox1 = GroupBox(self, QRect(20, 10, 191, 131),  'Shot Info')

        # Label
        self.labelGroup1_ShotInfo = Label(self, QRect(10, 26, 52, 15),  'Film')

上記の例では、垂直レイアウトを使用して問題を解決しています。

于 2009-09-10T06:54:57.563 に答える