Благодаря следующему сообщению (Python Qt: How to catch "return" in qtablewidget) я нашел, как подкласс QTableWidget
для подключения ENTER ключевого события. Моя проблема заключается в том, что из этого подкласса я не могу найти способ охватить все другие виджеты.Как связать мой QTableWidget подкласс моей основной программы
Вот что я сделал.
Использование QtDesigner Я построил этот простой интерфейс с QTableWidget
и TextField
. Я повысил QTableWidget
до своего собственного MyTableWidget
(из вышеприведенного сообщения).
Основной код выглядит следующим образом:
import sys
from PyQt4 import QtGui, QtCore, Qt
from my_interface import Ui_MainWindow
class AppTemplateMain(QtGui.QMainWindow):
variable1 = 'my variable 1'
#initialize app
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self, parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
if __name__=="__main__":
app = QtGui.QApplication(sys.argv)
myapp = AppTemplateMain()
myapp.show()
exit_code=app.exec_()
sys.exit(exit_code)
и подкласс QTableWidget
определяется в отдельном файле mytablewidget.py
from PyQt4 import QtGui
from PyQt4.QtCore import Qt
class MyTableWidget(QtGui.QTableWidget):
def __init__(self, parent=None):
self.parent = parent
super(MyTableWidget, self).__init__(parent)
def keyPressEvent(self, event):
key = event.key()
if key == Qt.Key_Return or key == Qt.Key_Enter:
print('clicked enter')
else:
super(MyTableWidget, self).keyPressEvent(event)
Когда я нажимаю на столе, я получаю как ожидалось, сообщение «щелкнуть ввод» напечатано, как ожидалось. Но я хочу иметь доступ к другим виджетам GUI из этого подкласса .... и к variable1
, определенным в AppTemplateMain
.
Я чувствую, что у меня что-то не хватает, но не могу понять, что. Может кто-то мне помочь здесь.
Большое спасибо.
Где вы создаете таблицу в основной код? Вы можете создать пользовательский сигнал в таблице, который выдается в keyPressEvent, и подключить этот сигнал к функции в главном коде. – Mel
Кроме того, я не уверен, что вы хотите создать переменную 1, как это. Сейчас это статическая переменная, которая имеет особое поведение. См. Два первых ответа на этот вопрос: http: // stackoverflow.com/questions/68645/static-class-variables-in-python – Mel
Я попытался создать свой собственный keyPressEvent вот так: QtCore.QObject.connect (self.ui.tableWidget, QtCore.SIGNAL ("keyPressEvent()"), self .myYo) def мойYo (сам, мероприятие): печать ("мой лет") Без успеха! –