I actually have 3 questions in this.
I have a pushbutton which calls an external function (code example given below). when I press Run button, and function is being executed. I want to display message from that function to my Qlabel in window. so far, i am getting that message displayed when function is completely executed and returns to the main function. but i want to see that while function execution is in process. is there a way to fix it?
Secondly, My GUI goes in 'not responding' mode when it is executing any external functions. what could be the possible reason for this and way to fix it?
I want to dynamically adjust the size of all widgets when I open GUI in any other resolution(ScreenSize). right now, the size of QTablewidget is fixed in any case. How can I get it? can this be achieved through any settings in QTDesigner?
Code Generated by UI Designer:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1150, 905)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(290, 820, 161, 41))
self.pushButton.setObjectName("pushButton")
self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
self.tableWidget.setGeometry(QtCore.QRect(10, 10, 1131, 791))
self.tableWidget.setObjectName("tableWidget")
self.tableWidget.setColumnCount(0)
self.tableWidget.setRowCount(0)
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(580, 820, 191, 41))
self.label.setText("")
self.label.setObjectName("label")
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pushButton.setText(_translate("MainWindow", "Run"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
Main Script:
from PyQt5 import QtWidgets
from demoUI import Ui_MainWindow
from callingexternalfunction import callingexternalfunction
class DemoCode(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
super(DemoCode, self).__init__()
self.setupUi(self)
self.pushButton.clicked.connect(self.button_clicked)
def button_clicked(self):
callingexternalfunction(self)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
window = DemoCode()
window.show()
sys.exit(app.exec_())
Function callingexternalfunction:
import time
def callingexternalfunction(self):
for i in range(0,5):
time.sleep(3)
self.label.setText('3 Second Pause '+ str(i))