如何将QTableWidget子类链接到主程序

2024-10-02 08:15:24 发布

您现在位置:Python中文网/ 问答频道 /正文

感谢下面的帖子(Python Qt: How to catch "return" in qtablewidget),我找到了如何子类QTableWidget来连接ENTER键事件。我的问题是,从这个子类中,我无法找到访问所有其他小部件的方法。在

这是我所做的。在

使用QtDesigner,我用QTableWidgetTextField构建了这个简单的接口。我把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

^{pr2}$

当我在表中单击时,我如期得到消息“clicked enter”按预期打印。但是我想从这个子类访问GUI的其他小部件。。。。以及在AppTemplateMain中定义的variable1。在

我觉得我错过了一些显而易见的东西,但我不知道是什么。有人能帮我吗。在

非常感谢。在


Tags: fromimportselfappui部件mysys
2条回答

谢谢特莫罗

我刚刚找到了方法,就在这里(以防其他人和我一样对pyqt感到失望)

在mytablewidget.py rom PyQt4导入QtGui 从PyQt4.QtCore导入Qt

类MyTableWidget(qtablegui.qtablegui)公司名称:

parent = None

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)

def setUI(self, ui_parent):
    self.ui = ui_parent

在里面呢主.py在

导入系统 从PyQt4导入QtGui,QtCore,Qt 从我的接口导入Ui主窗口

^{pr2}$

您可以在表中创建一个自定义信号,您可以随时发出该信号。使用new style signal and slots

class MyTableWidget(QtGui.QTableWidget):
    myCustomSignal=pyqtSignal()

    def keyPressEvent(self, event):
        key = event.key()
        if key == Qt.Key_Return or key == Qt.Key_Enter:
            print('clicked enter')
            self.myCustomSignal.emit()  
        ...

在主代码中,连接到以下信号:

^{pr2}$

您不能直接连接到keyPressEvent,因为正如其名称中所述,它是一个事件,而不是信号。在

相关问题 更多 >

    热门问题