[问题] pyqt 鼠标点击事件创造按钮 (已解决)

楼主: znmkhxrw (QQ)   2020-07-23 02:39:44
首先来个简单的例子, 要在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做连结
但是不知道所谓的"连结"到底在哪
想请教一下问题出在哪呢???
谢谢解惑!
作者: skyconquer (梅郭曲)   2020-07-24 12:56:00
请问你是在 mousePressEvent里加上 "*.show()"解决的吗?
楼主: znmkhxrw (QQ)   2020-07-27 22:50:00
嘿对 我关键字下错 朋友找到的reference说在parent.show后所加的object的default都是isHidden()=True
作者: skyconquer (梅郭曲)   2020-07-28 18:03:00
OK,谢谢

Links booklink

Contact Us: admin [ a t ] ucptt.com