What I want to do is to be able to open grid.py by clicking on the button on main.py. Preferably by keeping the same structure (ui file and the main and grid python files). Thank you,
So, I've created a simple UI interface that contains only a push button with Qt Designer (test-open.ui):
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>604</width>
<height>424</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QPushButton" name="pushButton">
<property name="geometry">
<rect>
<x>230</x>
<y>160</y>
<width>75</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>604</width>
<height>21</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>
Then I created the main .py file (main.py):
from PyQt5 import QtWidgets, uic
app = QtWidgets.QApplication([])
dlg = uic.loadUi(r"E:\Python\Project\test-open.ui")
dlg.show()
app.exec()
And finally, this is a Grid I've created with WxPython that I want to be opened by the button click (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)
# Show widget
self.show()
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()
sys.exit(app.exec_())