PyQt5按钮单击不使用功能[重复]
Posted
技术标签:
【中文标题】PyQt5按钮单击不使用功能[重复]【英文标题】:PyQt5 Button Clicked Not Working with Function [duplicate] 【发布时间】:2021-11-03 12:03:30 【问题描述】:当我单击带有以下源代码的按钮时,我正在尝试使用函数:
from PySide2.QtWidgets import QApplication
from ui_interface import *
from Custom_Widgets.Widgets import *
from PyQt5.QtGui import QIcon
# from PyQt5.QtWidgets import *
from Custom_Widgets.Widgets import QCustomSlideMenu
import sys
class MainWindow(QMainWindow):
def __init__(self,parent = None):
QMainWindow.__init__(self)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
########################################################################
# APPLY JSON STYLESHEET
########################################################################
# self = QMainWindow class
# self.ui = Ui_MainWindow / user interface class
loadJsonStyle(self, self.ui)
########################################################################
self.show()
self.ui.pushButton_2.clicked.connect(self.my_text())
@pyqtSlot()
def on_button1(self):
print("Button #1")
def my_text(self):
index = 1
print("0 button clicked".format(index))
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
# app.setWindowIcon(QIcon(':/icons/home.ico'))
window.show()
sys.exit(app.exec_())
当我这样使用时:
self.ui.pushButton_2.clicked.connect(self.my_text())
当我点击按钮时,什么都不显示。
但如果我这样使用:
self.ui.pushButton_2.clicked.connect(lambda: self.my_text())
有效。
而且当我这样使用时:
self.ui.pushButton_2.clicked.connect(self.on_button1())
它有效。 但是我不明白为什么第一步不起作用?
【问题讨论】:
当你将信号连接到一个槽时,你应该只传递一个函数,但你传递的是一个函数调用。基本上,您需要删除括号。self.ui.pushButton_2.clicked.connect(self.my_text)
应该可以正常工作,类似于 self.ui.pushButton_2.clicked.connect(lambda: self.my_text())
但是如果我使用参数我如何使用没有函数类型的参数。例如,如果我有 def my_text(self,index): 函数,我如何为 my_text 函数提供索引?
这种情况下需要通过lambda函数来传递。
【参考方案1】:
试试这个
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sys
class Window(QMainWindow):
def __init__(self):
super().__init__()
# setting title
self.setWindowTitle("Python ")
# setting geometry
self.setGeometry(100, 100, 600, 400)
# calling method
self.UiComponents()
# showing all the widgets
self.show()
# method for widgets
def UiComponents(self):
# creating a push button
button = QPushButton("CLICK", self)
# setting geometry of button
button.setGeometry(200, 150, 100, 30)
# adding action to a button
button.clicked.connect(self.clickme)
# action method
def clickme(self):
print("pressed")
# create pyqt5 app
App = QApplication(sys.argv)
# create the instance of our Window
window = Window()
# start the app
sys.exit(App.exec())
你在找这个吗???
【讨论】:
我从geeksforgeeks.org/pyqt5-how-to-add-action-to-a-button抓到的以上是关于PyQt5按钮单击不使用功能[重复]的主要内容,如果未能解决你的问题,请参考以下文章