作者znmkhxrw (QQ)
看板Python
标题[问题] pyqt 滑鼠点击事件创造按钮 无法显示
时间Thu Jul 23 02:39:44 2020
首先来个简单的例子, 要在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做连结
但是不知道所谓的"连结"到底在哪
想请教一下问题出在哪呢???
谢谢解惑!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.110.132.77 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1595443186.A.ED1.html
※ 编辑: znmkhxrw (123.110.132.77 台湾), 07/23/2020 03:11:32
※ 编辑: znmkhxrw (42.72.62.61 台湾), 07/23/2020 12:58:57
1F:推 skyconquer: 请问你是在 mousePressEvent里加上 "*.show()"解决的 07/24 12:56
2F:→ skyconquer: 吗? 07/24 12:56
3F:→ znmkhxrw: 嘿对 我关键字下错 朋友找到的reference说在parent.show 07/27 22:50
4F:→ znmkhxrw: 後所加的object的default都是isHidden()=True 07/27 22:50
5F:推 skyconquer: OK,谢谢 07/28 18:03