gpt4 book ai didi

python - 如何在 PyQt 中获取之前激活的小部件?

转载 作者:行者123 更新时间:2023-11-28 17:46:34 25 4
gpt4 key购买 nike

我有一个按钮和两个表格小部件。按下按钮会执行两种不同的操作,具体取决于在按下按钮之前激活了哪个表格小部件。如何获得正确的小部件?

最佳答案

例如,您可以使用 focusInEvent存储激活的小部件并在按下按钮时将其返回,如下所示:

#!/usr/bin/env python
#-*- coding:utf-8 -*-

from PyQt4 import QtGui, QtCore

class MyTableWidget(QtGui.QTableWidget):
focusIn = QtCore.pyqtSignal(QtCore.QObject)

def __init__(self, parent=None):
super(MyTableWidget, self).__init__(parent)

def focusInEvent(self, event):
self.focusIn.emit(self)

return super(MyTableWidget, self).focusInEvent(event)

class MyWindow(QtGui.QWidget):
def __init__(self, parent=None):
super(MyWindow, self).__init__(parent)

self.lastFocusedTableWidget = None

self.tableWidgetFirst = MyTableWidget(self)
self.tableWidgetFirst.setObjectName("tableWidgetFirst")
self.tableWidgetFirst.focusIn.connect(self.on_tableWidget_focusIn)

self.tableWidgetSecond = MyTableWidget(self)
self.tableWidgetSecond.setObjectName("tableWidgetSecond")
self.tableWidgetSecond.focusIn.connect(self.on_tableWidget_focusIn)

self.pushButtonLastFocused = QtGui.QPushButton(self)
self.pushButtonLastFocused.setText("Print the last focused QTableWidget!")
self.pushButtonLastFocused.clicked.connect(self.on_pushButtonLastFocused_clicked)

self.layoutVertical = QtGui.QVBoxLayout(self)
self.layoutVertical.addWidget(self.tableWidgetFirst)
self.layoutVertical.addWidget(self.tableWidgetSecond)
self.layoutVertical.addWidget(self.pushButtonLastFocused)

@QtCore.pyqtSlot(QtCore.QObject)
def on_tableWidget_focusIn(self, obj):
self.lastFocusedTableWidget = obj

@QtCore.pyqtSlot()
def on_pushButtonLastFocused_clicked(self):
print self.lastFocusedTableWidget.objectName()

if __name__ == "__main__":
import sys

app = QtGui.QApplication(sys.argv)
app.setApplicationName('MyWindow')

main = MyWindow()
main.resize(333, 111)
main.show()

sys.exit(app.exec_())

关于python - 如何在 PyQt 中获取之前激活的小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17376085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com