2016-10-29 2 views
1

ボタンを押すと、そのボタンのテキストであるパラメータで関数を開始する必要があります。特定のパラメータを持つ関数にボタンをPyQtでどのように接続しますか?

# -*- coding: utf-8 -*- 
import ftplib 
from PyQt4 import QtGui, QtCore 
import sys 
import socket 

app = QtGui.QApplication(sys.argv) 
window = QtGui.QWidget() 

List = ['one', 'two', 'free'] 

layer = QtGui.QVBoxLayout() 
window.setLayout(layer) 

def btn_clicked(btn): 
    print 'button with text <%s> clicked' %(btn) 

for i in List: 
    button = QtGui.QPushButton(i) 
    layer.addWidget(button) 
    QtCore.QObject.connect(button, QtCore.SIGNAL('clicked()'), btn_clicked(button.text())) # <--- the problem is here 

window.show() 
sys.exit(app.exec_()) 

答えて

0

私はラムダを超える部分好むと私はそれが使いやすいだろうと思います。

from functools import partial 
... 
for i in List: 
    button = QtGui.QPushButton(i) 
    layer.addWidget(button) 
    button.clicked.connect(partial(btn_clicked, str(button.text()))) 
0

このようなボタンを接続します

for i in List: 
    button = QtGui.QPushButton(i) 
    layer.addWidget(button) 
    button.clicked.connect(lambda arg, text=i: myfunc(text)) 
関連する問題