pyqt GridLayout 不显示widget
class MyCalc(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): # make elements buttons = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".", "+", "-", "*", "/"] position = [(i,j) for i in range(5) for j in range(4)] layout = QGridLayout() for pos,name in zip(position,buttons): button = QPushButton(name) layout.addWidget(button, *pos) self.move(300, 150) self.show() if __name__ == "__main__": app = QApplication(sys.argv) w = MyCalc() sys.exit(app.exec_())
只能显示一个空的widget,不能显示buttons。为什么?
尝试修改成
button = QPushButton(name, self)则所有的button都叠加显示在左上角(只有最后一个button在toppest,是available的)。
新手。
在发帖之前也想过一些办法和搜过一些可能的情况,均未果。
求帮助,多谢。
补充:
后面加了 self.setLayout(layout),也不行的
++++++
环境: Ubuntu 12.10 (不要吐槽版本太老)
Python 3.5.x; Qt 5.5; PyQt5_gpl-5.7;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
对了,后面加了 self.setLayout(layout),也不行的
多谢回复。 我也写过10个buttons, btn1=QPushButton("1"), btn2=... 和这种情况一样。 tks anyway.
没有运行你的代码,建议方向:
这里的button这个变量的scope很小,在你的for loop本次循环结束以后就被删除了。可以尝试一下用一个有persistent scope的list来储存每个button。