单击按钮以使用 PyQt5 python 创建一个新按钮 [英] Clicking a button to create a new button using PyQt5 python
本文介绍了单击按钮以使用 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屋!
查看全文