在Python和Pyqt中,我有一个简单的类,它实例化了一个Label类和一个GroupBox类。
根据文档,在创建时将Groupbox传递给Label应该使Groupbox成为Label的父对象。然而,我在这里一定遗漏了一些简单的东西。当我创建GroupBox时,它很好,但是当我创建标签时-它看起来扭曲了(或者可能在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()发布于 2009-09-10 06:54:58
问题是你没有使用布局。因为您没有使用其中一个,所以这两个小部件都是在另一个小部件之上呈现的。当然,这取决于您正在尝试做什么,但下面的例子应该是一个很好的例子:
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')上面的例子使用了垂直布局并解决了这个问题。
https://stackoverflow.com/questions/1391174
复制相似问题