Это мой пример кода.В моем реальном проекте я использовал 2 строчных редактирования в разных местах.Используя этот код, мне нужно создать виртуальную клавиатуру. Чтобы она отображала виртуальную клавиатуру, если мы нажимаем на строку edit. Используя ту же виртуальную клавиатуру, я хочу ввести свой текст в строку edit. Наконец, я создал виртуальную клавиатуру, нопроблема в том, что она применима только к редактированию первой строки, но я хочу вызвать ту же клавиатуру для редактирования другой строки. Я не получаю клавиатуру для редактирования второй строки. Может ли кто-нибудь сказать мне, как отобразить клавиатуру для редактирования второй строки?.
import sys
from pyface.qt import QtGui, QtCore
from functools import partial
class MainWindow(QtGui.QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.central_widget = QtGui.QWidget()
self.cw_layout = QtGui.QHBoxLayout()
self.central_widget.setLayout(self.cw_layout)
self.setCentralWidget(self.central_widget)
self.btn = QtGui.QPushButton("save")
self.btn.clicked.connect(self.savebtn)
self.line = LineEdit()
self.line_edit1 = LineEdit()
self.kb = KeyBoard()
self.cw_layout.addWidget(self.line)
self.cw_layout.addWidget(self.btn)
self.create_connections()
def savebtn(self):
global fileName
self.d1 = QtGui.QDialog()
self.form1 = QtGui.QFormLayout(self.d1)
self.name_file = QtGui.QLabel("File Name:")
self.line_edit1 = LineEdit()
self.d1.close()
self.saveBtn = QtGui.QPushButton("Save")
self.saveBtn.clicked.connect(self.savefile)
self.canclebtn = QtGui.QPushButton("Cancel")
self.canclebtn.clicked.connect(self.d1.close)
self.form1.addRow(self.name_file, self.line_edit1)
self.form1.addRow( self.canclebtn,self.saveBtn)
self.d1.setWindowTitle("Enter Grids")
self.d1.setGeometry(350,200,300,100)
self.d1.setWindowModality(QtCore.Qt.ApplicationModal)
self.d1.exec_()
def savefile(self):
self.d1.close()
text = self.line_edit1.text()
print "line edit text issssssssssss",text
def create_connections(self):
self.line.signal_evoke_kb.connect(self.show_kb)
self.line_edit1.signal_evoke_kb.connect(self.show_kb)
def show_kb(self):
if self.kb.isHidden():
self.kb.show()
else:
self.kb.hide()
class LineEdit(QtGui.QLineEdit):
signal_evoke_kb = QtCore.Signal()
def __init__(self):
super(LineEdit, self).__init__()
def mousePressEvent(self, QMouseEvent):
super(LineEdit, self).mousePressEvent(QMouseEvent)
self.signal_evoke_kb.emit()
class KeyBoard(QtGui.QWidget):
def __init__(self):
super(KeyBoard, self).__init__()
self.vBox = QtGui.QVBoxLayout()
self.flayout = QtGui.QHBoxLayout()
self.slayout = QtGui.QHBoxLayout()
self.tlayout = QtGui.QHBoxLayout()
self.folayout = QtGui.QHBoxLayout()
self.btnlayout = QtGui.QHBoxLayout()
custom_signal = QtCore.Signal()
for i in range(0,10):
self.accBtn = QtGui.QPushButton(str(i))
self.accBtn.clicked.connect(partial(self.keyBoardClicked,i))
self.flayout.addWidget(self.accBtn)
for key in [ 'q','w','e','r','t','y','u','i','o','p']:
self.accBtn = QtGui.QPushButton(str(key))
self.accBtn.clicked.connect(partial(self.keyBoardClicked,key))
self.slayout.addWidget(self.accBtn)
for key in [ 'a','s','d','f','g','h','i','j','k','l']:
self.accBtn = QtGui.QPushButton(str(key))
self.accBtn.clicked.connect(partial(self.keyBoardClicked,key))
self.tlayout.addWidget(self.accBtn)
for key in [ 'z','x','c','v','b','n','m','.' , ',']:
self.accBtn = QtGui.QPushButton(str(key))
self.accBtn.clicked.connect(partial(self.keyBoardClicked,key))
self.folayout.addWidget(self.accBtn)
self.btn = QtGui.QPushButton("Backspace")
self.btn.clicked.connect(self.backspace)
self.btnlayout.addWidget(self.btn)
self.btn1 = QtGui.QPushButton("Enter")
self.btn1.clicked.connect(self.enter)
self.btnlayout.addWidget(self.btn1)
self.btn2 = QtGui.QPushButton("Close")
self.btn2.clicked.connect(self.close)
self.btnlayout.addWidget(self.btn2)
self.vBox.addLayout(self.flayout)
self.vBox.addLayout(self.slayout)
self.vBox.addLayout(self.tlayout)
self.vBox.addLayout(self.folayout)
self.vBox.addLayout(self.btnlayout)
self.setLayout(self.vBox)
self.setWindowTitle('Virtual keyboard')
def backspace(self):
self.line.backspace()
def keyBoardClicked(self,key):
pass
def enter(self):
print "enterrrrr"
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
mw = MainWindow()
mw.show()
sys.exit(app.exec_())