Python PyQt4-信号和插槽。将按钮连接到方法时出现问题
我的目标是一个GUI窗口,提示用户输入特定内容。我需要用户打开公司徽标.jpg、测试设置的图片和2.csv数据文件。然后我希望他们输入报告的名称和一些测试设置 我的第一次尝试成功地生成了一个弹出窗口,其中每个项目都有一个按钮。因为我对每个按钮有不同的要求,所以我决定回去分别做每个信号/插槽组合。我希望能够导入图片和数据,并将这些内容分配给变量名。不幸的是,在当前的配置中,我得到的最接近的结果是,它会弹出一个窗口,希望用户在其中选择一个文件,然后它会显示另一个带有按钮的窗口……这不起作用Python PyQt4-信号和插槽。将按钮连接到方法时出现问题,python,pyqt4,Python,Pyqt4,我的目标是一个GUI窗口,提示用户输入特定内容。我需要用户打开公司徽标.jpg、测试设置的图片和2.csv数据文件。然后我希望他们输入报告的名称和一些测试设置 我的第一次尝试成功地生成了一个弹出窗口,其中每个项目都有一个按钮。因为我对每个按钮有不同的要求,所以我决定回去分别做每个信号/插槽组合。我希望能够导入图片和数据,并将这些内容分配给变量名。不幸的是,在当前的配置中,我得到的最接近的结果是,它会弹出一个窗口,希望用户在其中选择一个文件,然后它会显示另一个带有按钮的窗口……这不起作用 impo
import sys
from PyQt4 import QtGui, QtCore
from PyQt4.QtGui import * #yes, I know I did this above.
from PyQt4.QtCore import * #However, when I only do the first one, I get errors. Same with the second way.
class CompiledWindow(QtGui.QWidget):
def __init__(self, parent = None):
QtGui.QWidget.__init__(self, parent)
def logo_pic(self):
global Logo_picture
Logo_picture = unicode( QFileDialog.getOpenFileName() )
self.setWindowTitle('Reasonably named window')
names = ['Open Logo Picture', 'Open Setup Picture', 'Open first data file', 'Open second data file', 'Enter text about settings', 'Enter other text about settings', 'Enter third setting', 'Enter fourth setting']
#this should give you an idea of how many items I need buttons for. I need to open 4 files and have the user enter several bits of text.
grid = QtGui.QGridLayout()
Logo_button = QtGui.QPushButton(names[0])
self.connect(Logo_button, QtCore.SIGNAL('clicked()'), QtCore.SLOT(logo_pic(self)))
grid.addWidget(Logo_button, 0, 0)
self.setLayout(grid)
app = QtGui.QApplication(sys.argv)
cw = CompiledWindow()
cw.show()
sys.exit(app.exec_())
以下是有效的修复方法:
-将def徽标_pic移出init
-将插槽/信号更改为
Logo_button=QtGui.QPushButton(名称[0])
Logo_按钮。单击。连接(self.Logo_pic)示例代码中存在几个问题,这些问题已在下面重新编写的版本中修复。希望这能帮助你朝着正确的方向开始
import sys
from PyQt4 import QtGui, QtCore
class CompiledWindow(QtGui.QWidget):
def __init__(self, parent = None):
QtGui.QWidget.__init__(self, parent)
self.setWindowTitle('Reasonably named window')
names = ['Open Logo Picture', 'Open Setup Picture', 'Open first data file', 'Open second data file', 'Enter text about settings', 'Enter other text about settings', 'Enter third setting', 'Enter fourth setting']
grid = QtGui.QGridLayout(self)
self.Logo_button = QtGui.QPushButton(names[0], self)
self.Logo_button.clicked.connect(self.logo_pic)
grid.addWidget(self.Logo_button, 0, 0)
def logo_pic(self):
self.Logo_picture = unicode(QtGui.QFileDialog.getOpenFileName())
print(self.Logo_picture)
app = QtGui.QApplication(sys.argv)
cw = CompiledWindow()
cw.show()
sys.exit(app.exec_())
尝试
self.Logo\u按钮。单击。连接(self.Logo\u pic)
并将Logo\u pic
作为一个实例方法。应该在py3中工作,但不确定py2。什么是实例方法?我正在使用2.7。将def logo\u pic(self)
从def\uuuu init\uuuu
中取出,并将其置于同一级别。谢谢!顺便说一句,最后一行应该是app.exec_389;(),至少对于Python2是这样。7@mauve. 不知道你的意思。对于我来说,使用python-2.7这个示例非常好。您是否忘记导入sys
模块?我没有。但我在另一个导入中也遇到了这个奇怪的错误……如果不添加“from PyQt4.QtGui import*”,我会在QLineEdit中得到一个未知的命令错误……所以可能发生了其他事情。