单击按钮以使用 PyQt5 python 创建一个新按钮 [英] Clicking a button to create a new button using PyQt5 python

查看:70
本文介绍了单击按钮以使用 PyQt5 python 创建一个新按钮的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试创建一个使用 python

<小时>

或者使用布局:

导入系统从 PyQt5.QtWidgets 导入 QApplication、QWidget、QPushButton、QVBoxLayout从 PyQt5.QtGui 导入 QIcon从 PyQt5.QtCore 导入 pyqtSlot类应用程序(QWidget):def __init__(self):super().__init__()self.initUI()定义 initUI(self):self.setWindowTitle("我的窗口")self.num = 2#创建一个被点击的按钮button1 = QPushButton('Button-1', self)# button1.move(100, 70)button1.clicked.connect(self.on_click)self.layout = QVBoxLayout(self)self.layout.addWidget(button1)@pyqtSlot()def on_click(self):print('Button-{} 将被创建'.format(self.num))button2 = QPushButton('Button-{}'.format(self.num), self)button2.clicked.connect(lambda: 打印(button2.text()))# button2.move(100, 200)self.layout.addWidget(button2)self.num += 1如果 __name__ == '__main__':app = QApplication(sys.argv)前 = 应用程序()例如.show()sys.exit(app.exec_())

I'm trying to create a window(UI) that have a button click action implemented using python and PyQt5. But, i want my button to create a new button when i clicked it. (i.e: clicking a button to create a new button). Can some one notify me on how to do that? my sample code is as follows:

    from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
    from PyQt5.QtGui import QIcon
    from PyQt5.QtCore import pyqtSlot
    import sys

    class App(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle("my window")
        self.setGeometry(100, 100, 320, 200)

        #creating a button to be clicked
        button1 = QPushButton('Button-1', self)
        button1.move(100, 70)


        #calling a function on_click upon clicking button1, i want this function to create a new button named button2
        button.clicked.connect(self.on_click)
        self.show()

    @pyqtSlot()
    def on_click(self):
        print('Button-2 will be created')
        button2 = QPushButton('Button-2', self)
        button2.move(100, 200)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())

I want my function, the on_click(self), to create a new button: but i can't. do i miss something?

解决方案

You need to replace button.clicked.connect (self.on_click) with button1.clicked.connect (self.on_click). and add button2.show ().

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot


class App(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle("my window")
        self.setGeometry(100, 100, 320, 300)

        #creating a button to be clicked
        button1 = QPushButton('Button-1', self)
        button1.move(100, 70)
        button1.clicked.connect(self.on_click)      # button1

    @pyqtSlot()
    def on_click(self):
        print('Button-2 will be created')
        button2 = QPushButton('Button-2', self)
        button2.move(100, 200)
        button2.show()                              # +++

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    ex.show()
    sys.exit(app.exec_())


Or using layouts:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot


class App(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle("my window")
        self.num = 2

        #creating a button to be clicked
        button1 = QPushButton('Button-1', self)
#        button1.move(100, 70)
        button1.clicked.connect(self.on_click)     

        self.layout = QVBoxLayout(self) 
        self.layout.addWidget(button1)        

    @pyqtSlot()
    def on_click(self):
        print('Button-{} will be created'.format(self.num))
        button2 = QPushButton('Button-{}'.format(self.num), self)
        button2.clicked.connect(lambda : print(button2.text()))
#        button2.move(100, 200)

        self.layout.addWidget(button2)
        self.num += 1


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    ex.show()
    sys.exit(app.exec_())

这篇关于单击按钮以使用 PyQt5 python 创建一个新按钮的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆