을 얻을 텍스트에서 QPushButton 에 PyQt
-
12-11-2019 - |
문제
나를 만들려고 간단한 키보드 목록에서의능이 포함되어.QPushButton 개체입니다.
class XKeyboard(QtGui.QWidget):
'''Special virtual keyboard for any language.'''
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.MainLayout = QtGui.QVBoxLayout()
self.TextEntry = QtGui.QTextEdit()
self.Keyboard = QtGui.QVBoxLayout()
self.MainLayout.addWidget(self.TextEntry)
self.MainLayout.addLayout(self.Keyboard)
self.setLayout(self.MainLayout)
def addRow(self, keys):
layout = QtGui.QHBoxLayout()
buttons = [QtGui.QPushButton(unicode(key)) for key in keys]
for button in buttons:
key = keys[buttons.index(button)]
layout.addWidget(button)
button.clicked.connect(
lambda key: self.keyClick(key))
self.keyClick(key)
self.Keyboard.addLayout(layout)
def keyClick(self, key):
self.TextEntry.insertPlainText(key)
문제는 람다를 반환 False
는 대신 핵심이다.무엇이 잘못된 것입니까?
해결책
lambda
:
lambda key: self.keyClick(key)
.
는 다음과 같습니다 :
def dummy(key):
self.keyClick(key)
.
그래서 기본적으로 clicked
신호에서 매개 변수를 받아들이고 있습니다. 반환 checked
버튼의 상태가 있고 False
메소드로 전달되기 때문에 keyClick
입니다.keyClick
메소드는 for 루프에서 key
매개 변수를 수신하지 않습니다.
왜 key=key
가 필요한 이유는 다른 주제입니다. 관련된 대상의이 특별한 답변 (다른 답변과 함께)는 약간의 빛을 밝힐 수 있습니다.
다른 팁
이를 수행하는 올바른 방법은 QButtonGroup ,이 상황을 위해 설계된이 상황을 위해 설계되었습니다.
제휴하지 않습니다 StackOverflow