我正在尝试使用代码创建一个带有按钮和标签的自定义小部件:
from PySide.QtGui import *
from PySide.QtCore import *
class MyWidget(QWidget):
def __init__(self):
super(MyWidget, self).__init__()
self.initUI()
def initUI(self):
self.btn = QPushButton('dia', self)
self.btn.move(20, 20)
self.le = QLineEdit(self)
self.le.move(100, 20)
在此之后,我为主框架创建了一个类,并尝试使用代码显示此小部件:
class Example(QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
self.mw = MyWidget()
self.mw.move(20, 20)
self.resize(250, 300)
self.center()
self.setWindowTitle('Custom Widget Example')
self.show()
当我从终端运行此脚本时,它显示但是空白。我没有在任何地方看到我的小部件。
我需要做些什么才能显示这个小部件?
谢谢。
答案 0 :(得分:3)
为什么使用坐标?使用布局:
class MyWidget(QWidget):
def __init__(self, parent=None):
super(MyWidget, self).__init__(parent) #always provide parent!
self.initUI()
def initUI(self):
self.btn = QPushButton('dia', self)
self.le = QLineEdit(self)
layout = QHBoxLayout() #whatever layout you want
layout.addWidget(self.btn)
layout.addWidget(self.le)
self.setLayout(layout)
class Example(QWidget):
def __init__(self, parent=None):
super(Example, self).__init__(parent)
self.initUI()
def initUI(self):
self.mw = MyWidget(self) # remember the parent!
layout = QHBoxLayout()
layout.addWidget(self.mw)
self.setLayout(layout)
self.resize(250, 300)
self.center()
self.setWindowTitle('Custom Widget Example')
self.show()
如果想要更好地控制元素的处置,请使用网格布局。
如果您真的想使用“绝对坐标”,那么您必须始终记住传递父窗口小部件,否则子窗口小部件将无法自行绘制。