PyQT 按钮点击不起作用
PyQT Button click doesn't work
所以我的问题是,我不想为一堆按钮手动编写大量代码,而是想为 QPushButton
创建一个 class,然后在调用时更改这么多变量class 创建我的个人按钮。
我的问题是尽管调用了 clicked.connect 函数并且在 运行 代码上没有错误,但我的按钮似乎无法点击。下面是按钮的相关部分 class:
class Button(QtGui.QPushButton):
def __init__(self, parent):
super(Button, self).__init__(parent)
self.setAcceptDrops(True)
self.setGeometry(QtCore.QRect(90, 90, 61, 51))
self.setText("Change Me!")
def retranslateUi(self, Form):
self.clicked.connect(self.printSomething)
def printSomething(self):
print "Hello"
我是这样调用按钮的 class:
class MyWindow(QtGui.QWidget):
def __init__(self):
super(MyWindow,self).__init__()
self.btn = Button(self)
layout = QtGui.QVBoxLayout(self)
layout.addWidget(self.btn)
self.setLayout(layout)
您应该在 __init__
方法上执行与 clicked 信号的连接:
from PyQt4 import QtGui,QtCore
class Button(QtGui.QPushButton):
def __init__(self, parent):
super(Button, self).__init__(parent)
self.setAcceptDrops(True)
self.setGeometry(QtCore.QRect(90, 90, 61, 51))
self.setText("Change Me!")
self.clicked.connect(self.printSomething) #connect here!
#no need for retranslateUi in your code example
def printSomething(self):
print "Hello"
class MyWindow(QtGui.QWidget):
def __init__(self):
super(MyWindow,self).__init__()
self.btn = Button(self)
layout = QtGui.QVBoxLayout(self)
layout.addWidget(self.btn)
self.setLayout(layout)
app = QtGui.QApplication([])
w = MyWindow()
w.show()
app.exec_()
您可以 运行 它并且每次单击该按钮时都会在控制台上看到 Hello。
retranslateUi
方法用于 i18n。您可以查看 here.
所以我的问题是,我不想为一堆按钮手动编写大量代码,而是想为 QPushButton
创建一个 class,然后在调用时更改这么多变量class 创建我的个人按钮。
我的问题是尽管调用了 clicked.connect 函数并且在 运行 代码上没有错误,但我的按钮似乎无法点击。下面是按钮的相关部分 class:
class Button(QtGui.QPushButton):
def __init__(self, parent):
super(Button, self).__init__(parent)
self.setAcceptDrops(True)
self.setGeometry(QtCore.QRect(90, 90, 61, 51))
self.setText("Change Me!")
def retranslateUi(self, Form):
self.clicked.connect(self.printSomething)
def printSomething(self):
print "Hello"
我是这样调用按钮的 class:
class MyWindow(QtGui.QWidget):
def __init__(self):
super(MyWindow,self).__init__()
self.btn = Button(self)
layout = QtGui.QVBoxLayout(self)
layout.addWidget(self.btn)
self.setLayout(layout)
您应该在 __init__
方法上执行与 clicked 信号的连接:
from PyQt4 import QtGui,QtCore
class Button(QtGui.QPushButton):
def __init__(self, parent):
super(Button, self).__init__(parent)
self.setAcceptDrops(True)
self.setGeometry(QtCore.QRect(90, 90, 61, 51))
self.setText("Change Me!")
self.clicked.connect(self.printSomething) #connect here!
#no need for retranslateUi in your code example
def printSomething(self):
print "Hello"
class MyWindow(QtGui.QWidget):
def __init__(self):
super(MyWindow,self).__init__()
self.btn = Button(self)
layout = QtGui.QVBoxLayout(self)
layout.addWidget(self.btn)
self.setLayout(layout)
app = QtGui.QApplication([])
w = MyWindow()
w.show()
app.exec_()
您可以 运行 它并且每次单击该按钮时都会在控制台上看到 Hello。
retranslateUi
方法用于 i18n。您可以查看 here.