Вы путаете понятия, программа - это не набор файлов, а взаимодействие между объектами, созданными на основе классов.Поэтому, прежде чем что-либо реализовывать, я предполагаю, что файлы имеют следующую структуру:
├── grid.py
├── main.py
└── test-open.ui
С другой стороны, в конструкторе класса App вы показываете окно, а это не то, что вам нужно, изначально окнодолжен быть закрыт, поэтому я устраню эту линию.Переходя к точке, вы должны импортировать модуль сетки в main, чтобы иметь возможность создавать объект виджета App.
grid.py
import sys
from PyQt5.QtWidgets import (
QMainWindow,
QApplication,
QWidget,
QAction,
QTableWidget,
QTableWidgetItem,
QVBoxLayout,
)
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot
class App(QWidget):
def __init__(self):
super().__init__()
self.title = "PyQt5 table - pythonspot.com"
self.left = 0
self.top = 0
self.width = 460
self.height = 200
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
self.createTable()
# Add box layout, add table to box layout and add box layout to widget
self.layout = QVBoxLayout()
self.layout.addWidget(self.tableWidget)
self.setLayout(self.layout)
def createTable(self):
# Create table
self.tableWidget = QTableWidget()
self.tableWidget.setRowCount(4)
self.tableWidget.setColumnCount(4)
self.tableWidget.setItem(0, 0, QTableWidgetItem("Cell (1,1)"))
self.tableWidget.setItem(0, 1, QTableWidgetItem("Cell (1,2)"))
self.tableWidget.setItem(0, 2, QTableWidgetItem("Cell (1,1)"))
self.tableWidget.setItem(0, 3, QTableWidgetItem("Cell (1,2)"))
self.tableWidget.setItem(0, 4, QTableWidgetItem("Cell (1,1)"))
self.tableWidget.setItem(1, 0, QTableWidgetItem("Cell (1,1)"))
self.tableWidget.setItem(1, 1, QTableWidgetItem("Cell (1,2)"))
self.tableWidget.setItem(1, 2, QTableWidgetItem("Cell (1,1)"))
self.tableWidget.setItem(1, 3, QTableWidgetItem("Cell (1,2)"))
self.tableWidget.setItem(1, 4, QTableWidgetItem("Cell (1,1)"))
self.tableWidget.setItem(2, 0, QTableWidgetItem("Cell (1,1)"))
self.tableWidget.setItem(2, 1, QTableWidgetItem("Cell (1,2)"))
self.tableWidget.setItem(2, 2, QTableWidgetItem("Cell (1,1)"))
self.tableWidget.setItem(2, 3, QTableWidgetItem("Cell (1,2)"))
self.tableWidget.setItem(2, 4, QTableWidgetItem("Cell (1,1)"))
self.tableWidget.setItem(3, 0, QTableWidgetItem("Cell (1,1)"))
self.tableWidget.setItem(3, 1, QTableWidgetItem("Cell (1,2)"))
self.tableWidget.setItem(3, 2, QTableWidgetItem("Cell (1,1)"))
self.tableWidget.setItem(3, 3, QTableWidgetItem("Cell (1,2)"))
self.tableWidget.setItem(3, 4, QTableWidgetItem("Cell (1,1)"))
self.tableWidget.move(0, 0)
# table selection change
self.tableWidget.doubleClicked.connect(self.on_click)
@pyqtSlot()
def on_click(self):
print("\n")
for currentQTableWidgetItem in self.tableWidget.selectedItems():
print(
currentQTableWidgetItem.row(),
currentQTableWidgetItem.column(),
currentQTableWidgetItem.text(),
)
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = App()
ex.show()
sys.exit(app.exec_())
main.py
from PyQt5 import QtWidgets, uic
from grid import App
if __name__ == "__main__":
import os
import sys
app = QtWidgets.QApplication(sys.argv)
file = os.path.join(
os.path.dirname(os.path.realpath(__file__)), "test-open.ui"
)
dlg = uic.loadUi(file)
w = App()
dlg.pushButton.clicked.connect(w.show)
dlg.show()
sys.exit(app.exec_())