首先来个简单的例子, 要在MainWindow上贴一个pushbutton:
from PyQt5.QtWidgets import*
w = QMainWindow()
QPushButton("Hi",w)
w.show()
这样run起来确实就有一个"Hi"的按钮
再来是用class来创造的例子:
class MainWindow(QMainWindow):
def __init__(self,*args):
super().__init__(*args)
def create_btn(self):
QPushButton("Hi",self)
w = MainWindow()
w.create_btn()
w.show()
这样run起来也是成功的!
可是今天我如果用"mousePressEvent"去创造的话:
class MainWindow(QMainWindow):
def __init__(self,*args):
super().__init__(*args)
def mousePressEvent(self,e):
QPushButton("Hi",self)
w = MainWindow()
w.show()
这样run起来的话, 一开始当然没有button, 可是我点击鼠标后还是没有show出button
即便我多写了"self.repaint()"仍是看不到
("QPushButton("Hi",self)"如果摆在__init__里面当然会成功, 不讨论)
而因为我IDE是spyder, 所以run结束后可以继续单步执行
因此我去print "w.children()" 发现button确实已经加入w了
以结果论来说, 我猜测是mousePressEvent所创出的child没有跟parent做连结
但是不知道所谓的"连结"到底在哪
想请教一下问题出在哪呢???
谢谢解惑!