When running python script to import code to invoke the UI design and display i have no errors but i dont get a display - pyqt4

Good day, Please can someone assist, i have to add 2 calendars to my U.I, a birthday calendar and a 2019 calendar.
When i run the python script i don't receive any errors, nothing happens. It doesn't display the U.I design.
The first code is the .ui converted to .py and the code thereafter is the code to invoke and display the U.I Design, but nothing happens, please can someone help me, i am new to Python and i am really struggling.
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName(_fromUtf8("Dialog"))
Dialog.resize(704, 580)
self.calendarWidget = QtGui.QCalendarWidget(Dialog)
self.calendarWidget.setGeometry(QtCore.QRect(190, 10, 280, 155))
font = QtGui.QFont()
font.setFamily(_fromUtf8("Script MT Bold"))
font.setBold(True)
font.setItalic(False)
font.setWeight(75)
self.calendarWidget.setFont(font)
self.calendarWidget.setObjectName(_fromUtf8("calendarWidget"))
self.calendarWidget_2 = QtGui.QCalendarWidget(Dialog)
self.calendarWidget_2.setGeometry(QtCore.QRect(190, 220, 280, 155))
font = QtGui.QFont()
font.setFamily(_fromUtf8("Script MT Bold"))
font.setBold(True)
font.setWeight(75)
self.calendarWidget_2.setFont(font)
self.calendarWidget_2.setSelectedDate(QtCore.QDate(2019, 3, 27))
self.calendarWidget_2.setObjectName(_fromUtf8("calendarWidget_2"))
self.label = QtGui.QLabel(Dialog)
self.label.setGeometry(QtCore.QRect(10, 220, 101, 20))
self.label.setObjectName(_fromUtf8("label"))
self.dateEdit = QtGui.QDateEdit(Dialog)
self.dateEdit.setGeometry(QtCore.QRect(280, 380, 91, 21))
self.dateEdit.setDateTime(QtCore.QDateTime(QtCore.QDate(2019, 3, 27), QtCore.QTime(0, 0, 0)))
self.dateEdit.setDate(QtCore.QDate(2019, 3, 27))
self.dateEdit.setObjectName(_fromUtf8("dateEdit"))
self.dateEdit_2 = QtGui.QDateEdit(Dialog)
self.dateEdit_2.setGeometry(QtCore.QRect(280, 170, 91, 21))
self.dateEdit_2.setDate(QtCore.QDate(2019, 2, 22))
self.dateEdit_2.setObjectName(_fromUtf8("dateEdit_2"))
self.label_2 = QtGui.QLabel(Dialog)
self.label_2.setGeometry(QtCore.QRect(10, 20, 71, 20))
self.label_2.setObjectName(_fromUtf8("label_2"))
self.label_3 = QtGui.QLabel(Dialog)
self.label_3.setGeometry(QtCore.QRect(530, 510, 141, 16))
self.label_3.setObjectName(_fromUtf8("label_3"))
self.label_4 = QtGui.QLabel(Dialog)
self.label_4.setGeometry(QtCore.QRect(530, 530, 111, 16))
self.label_4.setObjectName(_fromUtf8("label_4"))
self.pushButton = QtGui.QPushButton(Dialog)
self.pushButton.setGeometry(QtCore.QRect(280, 430, 91, 23))
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.label_5 = QtGui.QLabel(Dialog)
self.label_5.setGeometry(QtCore.QRect(10, 380, 181, 16))
self.label_5.setObjectName(_fromUtf8("label_5"))
self.label_6 = QtGui.QLabel(Dialog)
self.label_6.setGeometry(QtCore.QRect(10, 460, 81, 16))
self.label_6.setObjectName(_fromUtf8("label_6"))
self.lineEdit = QtGui.QLineEdit(Dialog)
self.lineEdit.setGeometry(QtCore.QRect(280, 460, 91, 20))
self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
self.label_7 = QtGui.QLabel(Dialog)
self.label_7.setGeometry(QtCore.QRect(10, 170, 91, 16))
self.label_7.setObjectName(_fromUtf8("label_7"))
self.label_8 = QtGui.QLabel(Dialog)
self.label_8.setGeometry(QtCore.QRect(110, 170, 51, 16))
self.label_8.setObjectName(_fromUtf8("label_8"))
self.label_9 = QtGui.QLabel(Dialog)
self.label_9.setGeometry(QtCore.QRect(190, 380, 46, 13))
self.label_9.setObjectName(_fromUtf8("label_9"))
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
Dialog.setWindowTitle(_translate("Dialog", "Dialog", None))
self.label.setText(_translate("Dialog", "Birthday Calendar", None))
self.dateEdit.setDisplayFormat(_translate("Dialog", "d/m/yyyy", None))
self.dateEdit_2.setDisplayFormat(_translate("Dialog", "d/m/yyyy", None))
self.label_2.setText(_translate("Dialog", "2019 Calendar", None))
self.label_3.setText(_translate("Dialog", "Marelize Jansen van Vuuren", None))
self.label_4.setText(_translate("Dialog", "Student no: 60858753", None))
self.pushButton.setText(_translate("Dialog", "Calculate Age", None))
self.label_5.setText(_translate("Dialog", "Select DOB and Calculate exact age", None))
self.label_6.setText(_translate("Dialog", "Current Age", None))
self.label_7.setText(_translate("Dialog", "Select today\'s date", None))
self.label_8.setText(_translate("Dialog", "D/MM/YYY", None))
self.label_9.setText(_translate("Dialog", "D/MM/YY", None))
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
Dialog = QtGui.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())
This is the code to invoke and display the user interface
import sys
from dispcalendar import*
class MyForm(QtGui.QDialog):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.ui = Ui_Dialog()
self.ui.setupUi(self)
QtCore.QObject.connect(self.ui.calendarWidget, QtCore.SIGNAL('selectionChanged()'), self.dispdate)
QtCore.QObject.connect(self.ui.calendarWidget_2, QtCore.SIGNAL('selectionChanged()'), self.dispdate)
self.dispdate()
def dispdate(self):
self.ui.dateEdit_2.setDate(self.ui.calendarWidget.selectedDate())
self.ui.dateEdit.setDate(self.ui.calendarWidget_2.selectedDate())
self.ui.dateEdit_2.display(text)
self.ui.dateEdit.display(text)
self.ui.calendarWidget.display(text)
self.ui.calendarWidget_2.display(text)
if __name__=="__main__":
app = QtGui.QApplication(sys.argv)
myapp = MyForm()
myapp.show()
sys.exit(app.exec_())

Related

How to open multiple instances of one QDialog object in PyQt5? [duplicate]

I'm using PyQt5 designer to make a little application. I mostly work with designer rather than building from scratch so this might be a silly question. Basically i have a main menu and a "create" button that when clicked will open up the other pyqt5 .py file (also created in designer) i have been working on.
So far i complied the ui files into .py files and imported the popup window that i want to be able to generate more than one of and then i use this code to some success:
I have not added any additonal code to the converted ui files excpect this function:
Here is some code from my mainmenu and popoutwindow .py files:
this is the setupUi being called from my file im trying to replicate
class BookPopout(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(772, 685)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.lastNameLabel = QtWidgets.QLabel(self.centralwidget)
self.lastNameLabel.setGeometry(QtCore.QRect(20, 110, 60, 17))
self.lastNameLabel.setObjectName("lastNameLabel")
self.cityEntry = QtWidgets.QLineEdit(self.centralwidget)
self.cityEntry.setGeometry(QtCore.QRect(20, 310, 391, 27))
self.cityEntry.setReadOnly(True)
self.cityEntry.setObjectName("cityEntry")
self.bookTable = QtWidgets.QTableWidget(self.centralwidget)
self.bookTable.setGeometry(QtCore.QRect(470, 10, 281, 481))
font = QtGui.QFont()
font.setPointSize(7)
self.bookTable.setFont(font)
self.bookTable.setAutoFillBackground(False)
self.bookTable.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
self.bookTable.setRowCount(1)
self.bookTable.setColumnCount(1)
self.bookTable.setObjectName("bookTable")
item = QtWidgets.QTableWidgetItem()
self.bookTable.setItem(0, 0, item)
self.bookTable.horizontalHeader().setVisible(False)
self.bookTable.horizontalHeader().setCascadingSectionResizes(False)
self.bookTable.horizontalHeader().setDefaultSectionSize(100)
self.bookTable.horizontalHeader().setStretchLastSection(True)
self.addressLineOneEntry = QtWidgets.QLineEdit(self.centralwidget)
self.addressLineOneEntry.setGeometry(QtCore.QRect(20, 190, 391, 27))
self.addressLineOneEntry.setReadOnly(True)
self.addressLineOneEntry.setObjectName("addressLineOneEntry")
self.stateEntry = QtWidgets.QLineEdit(self.centralwidget)
self.stateEntry.setGeometry(QtCore.QRect(20, 380, 391, 27))
self.stateEntry.setReadOnly(True)
self.stateEntry.setObjectName("stateEntry")
self.firstNameEntry = QtWidgets.QLineEdit(self.centralwidget)
self.firstNameEntry.setGeometry(QtCore.QRect(20, 70, 391, 27))
self.firstNameEntry.setReadOnly(True)
self.firstNameEntry.setObjectName("firstNameEntry")
self.streetAddressLabel = QtWidgets.QLabel(self.centralwidget)
self.streetAddressLabel.setGeometry(QtCore.QRect(20, 170, 83, 17))
self.streetAddressLabel.setObjectName("streetAddressLabel")
self.streetAddressTwoLabel = QtWidgets.QLabel(self.centralwidget)
self.streetAddressTwoLabel.setGeometry(QtCore.QRect(20, 240, 220, 17))
self.streetAddressTwoLabel.setObjectName("streetAddressTwoLabel")
self.phoneNumberLabel = QtWidgets.QLabel(self.centralwidget)
self.phoneNumberLabel.setGeometry(QtCore.QRect(20, 480, 87, 17))
self.phoneNumberLabel.setObjectName("phoneNumberLabel")
self.addressLineTwoEntry = QtWidgets.QLineEdit(self.centralwidget)
self.addressLineTwoEntry.setGeometry(QtCore.QRect(20, 260, 391, 27))
self.addressLineTwoEntry.setReadOnly(True)
self.addressLineTwoEntry.setObjectName("addressLineTwoEntry")
self.phoneNumberEntry = QtWidgets.QLineEdit(self.centralwidget)
self.phoneNumberEntry.setGeometry(QtCore.QRect(20, 500, 391, 27))
self.phoneNumberEntry.setReadOnly(True)
self.phoneNumberEntry.setObjectName("phoneNumberEntry")
self.firstNameLabel = QtWidgets.QLabel(self.centralwidget)
self.firstNameLabel.setGeometry(QtCore.QRect(20, 40, 62, 17))
self.firstNameLabel.setObjectName("firstNameLabel")
self.cityLabel = QtWidgets.QLabel(self.centralwidget)
self.cityLabel.setGeometry(QtCore.QRect(20, 290, 23, 17))
self.cityLabel.setObjectName("cityLabel")
self.stateLabel = QtWidgets.QLabel(self.centralwidget)
self.stateLabel.setGeometry(QtCore.QRect(20, 350, 29, 17))
self.stateLabel.setObjectName("stateLabel")
self.zipEntry = QtWidgets.QLineEdit(self.centralwidget)
self.zipEntry.setGeometry(QtCore.QRect(20, 440, 391, 27))
self.zipEntry.setReadOnly(True)
self.zipEntry.setObjectName("zipEntry")
self.zipLabel = QtWidgets.QLabel(self.centralwidget)
self.zipLabel.setGeometry(QtCore.QRect(20, 410, 18, 17))
self.zipLabel.setObjectName("zipLabel")
self.emailEntry = QtWidgets.QLineEdit(self.centralwidget)
self.emailEntry.setGeometry(QtCore.QRect(20, 550, 391, 27))
self.emailEntry.setObjectName("emailEntry")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(20, 530, 80, 17))
self.label.setObjectName("label")
self.confirmNewPersonButton = QtWidgets.QPushButton(self.centralwidget)
self.confirmNewPersonButton.setGeometry(QtCore.QRect(20, 590, 85, 27))
self.confirmNewPersonButton.setObjectName("confirmNewPersonButton")
self.lastNameEntry = QtWidgets.QLineEdit(self.centralwidget)
self.lastNameEntry.setEnabled(True)
self.lastNameEntry.setGeometry(QtCore.QRect(20, 130, 391, 27))
self.lastNameEntry.setText("")
self.lastNameEntry.setReadOnly(True)
self.lastNameEntry.setObjectName("lastNameEntry")
self.sortComboBox = QtWidgets.QComboBox(self.centralwidget)
self.sortComboBox.setGeometry(QtCore.QRect(500, 530, 101, 31))
self.sortComboBox.setObjectName("sortComboBox")
self.sortByLabel = QtWidgets.QLabel(self.centralwidget)
self.sortByLabel.setGeometry(QtCore.QRect(570, 500, 71, 31))
font = QtGui.QFont()
font.setPointSize(14)
self.sortByLabel.setFont(font)
self.sortByLabel.setObjectName("sortByLabel")
self.sortButton = QtWidgets.QPushButton(self.centralwidget)
self.sortButton.setGeometry(QtCore.QRect(600, 530, 111, 31))
font = QtGui.QFont()
font.setPointSize(14)
self.sortButton.setFont(font)
self.sortButton.setObjectName("sortButton")
self.addNewPersonButton = QtWidgets.QPushButton(self.centralwidget)
self.addNewPersonButton.setGeometry(QtCore.QRect(40, 10, 101, 27))
self.addNewPersonButton.setObjectName("addNewPersonButton")
self.editEntryButton = QtWidgets.QPushButton(self.centralwidget)
self.editEntryButton.setGeometry(QtCore.QRect(170, 10, 111, 27))
self.editEntryButton.setObjectName("editEntryButton")
self.confirmEditButton = QtWidgets.QPushButton(self.centralwidget)
self.confirmEditButton.setGeometry(QtCore.QRect(20, 590, 111, 27))
self.confirmEditButton.setObjectName("confirmEditButton")
self.deleteEntryButton = QtWidgets.QPushButton(self.centralwidget)
self.deleteEntryButton.setGeometry(QtCore.QRect(300, 10, 111, 27))
self.deleteEntryButton.setObjectName("deleteEntryButton")
self.sortByLabel_2 = QtWidgets.QLabel(self.centralwidget)
self.sortByLabel_2.setGeometry(QtCore.QRect(530, 570, 131, 31))
font = QtGui.QFont()
font.setPointSize(12)
self.sortByLabel_2.setFont(font)
self.sortByLabel_2.setObjectName("sortByLabel_2")
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(500, 600, 101, 31))
self.lineEdit.setObjectName("lineEdit")
self.sortButton_2 = QtWidgets.QPushButton(self.centralwidget)
self.sortButton_2.setGeometry(QtCore.QRect(600, 600, 111, 31))
font = QtGui.QFont()
font.setPointSize(14)
self.sortButton_2.setFont(font)
self.sortButton_2.setObjectName("sortButton_2")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setEnabled(True)
self.menubar.setGeometry(QtCore.QRect(0, 0, 772, 27))
self.menubar.setObjectName("menubar")
self.menuOpen = QtWidgets.QMenu(self.menubar)
self.menuOpen.setObjectName("menuOpen")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.actionSave = QtWidgets.QAction(MainWindow)
self.actionSave.setObjectName("actionSave")
self.actionSave_as = QtWidgets.QAction(MainWindow)
self.actionSave_as.setObjectName("actionSave_as")
self.actionClose = QtWidgets.QAction(MainWindow)
self.actionClose.setObjectName("actionClose")
self.menuOpen.addAction(self.actionSave)
self.menuOpen.addSeparator()
self.menuOpen.addAction(self.actionSave_as)
self.menuOpen.addSeparator()
self.menuOpen.addAction(self.actionClose)
self.menubar.addAction(self.menuOpen.menuAction())
QtCore.QMetaObject.connectSlotsByName(MainWindow)
Here is my mainmenu py file:
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(255, 410)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.createNewBookButton = QtWidgets.QPushButton(self.centralwidget)
self.createNewBookButton.setGeometry(QtCore.QRect(40, 220, 171, 41))
self.createNewBookButton.setObjectName("createNewBookButton")
self.createNewBookButton.clicked.connect(self.openNewBook)
self.openExistingBookButton = QtWidgets.QPushButton(self.centralwidget)
self.openExistingBookButton.setGeometry(QtCore.QRect(40, 280, 171, 41))
self.openExistingBookButton.setObjectName("openExistingBookButton")
self.quitProgramButton = QtWidgets.QPushButton(self.centralwidget)
self.quitProgramButton.setGeometry(QtCore.QRect(40, 340, 171, 41))
self.quitProgramButton.setObjectName("quitProgramButton")
self.mainImage = QtWidgets.QGraphicsView(self.centralwidget)
self.mainImage.setGeometry(QtCore.QRect(10, 10, 231, 192))
self.mainImage.setObjectName("mainImage")
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def openNewBook(self):
self.popWin = QtWidgets.QMainWindow()
self.bookUI = bookPopout.BookPopout()
self.bookUI.setupUi(self.popWin)
self.popWin.show()
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_())
This works great for opening up ONE extra window, which stays open while my main window is open which is what i want, but then when i go to click to make another window appear, it just replaces the one i already had up, so i can only seem to have one extra at a time.
I figure that my old window is being referenced by self.popWin , and then being replaced over and over so my question i guess is what is the best way to go about "generating" windows instead of just referencing the same window over and over.. i tried to remove the "self" part but then the window just dosent even appear when i go to create a new window so i am kind of lost
for example i would expect to be able to write something like this but im not really sure how to go about doing so
currentWindows = []
newPopWin = QtWidgets.QMainWindow()
newBookUI = BookPopout()
newBookUI.setupUi(newPopWin)
newPopWin.show()
currentWindows.append(newPopWin)
this would be ideal so i could keep track of all current open windows so i may terminate them all once i close my main menu.
Any help would be appreciated to put me on the right track, i have tried looking up solutions but lots of examples are not using code converted from a UI file.
The problem is simple, we are overwriting an attribute and at that moment the previous element is deleted, for that reason only a window. As you point out the solution is to store it in a list.
But before that, I recommend you not to write your logic in the .py generated by Qt Designer since for example let's say that you want to modify something of the design, then when generating the new .py it will erase all your logic. What PyQt recommends is to use create another file where you generate the logic adviritiendote with the message: # WARNING! All changes made in this file will be lost!. So restore the previous files I called bookPopup.py and mainmenu.py by removing the openNewBook. Following the docs recommendation we obtain the following:
main.py
from PyQt5 import QtCore, QtGui, QtWidgets
import bookPopout
import mainmenu
class BookPopoutWindow(QtWidgets.QMainWindow, bookPopout.BookPopout):
def __init__(self, parent=None):
super(BookPopoutWindow, self).__init__(parent)
self.setupUi(self)
class MainMenu(QtWidgets.QMainWindow, mainmenu.Ui_MainWindow):
def __init__(self, parent=None):
super(MainMenu, self).__init__(parent)
self.setupUi(self)
self.createNewBookButton.clicked.connect(self.openNewBook)
self.popups = []
#QtCore.pyqtSlot()
def openNewBook(self):
popWin = BookPopoutWindow()
popWin.show()
self.popups.append(popWin)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
w = MainMenu()
w.show()
sys.exit(app.exec_())
PyQt5 Opening Multiple Windows/Widgets and Closing them
import sys
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication, QAction
import random
class Widget2(QWidget):
def __init__(self):
super().__init__()
w2btn = QPushButton('Another Widget ' +
str(random.randrange(5, 100, 5)), self)
w2btn.clicked.connect(self.w2btnclicked)
w2btn.resize(w2btn.sizeHint())
w2btn.move(50, 50)
def w2btnclicked(self):
print("Widget 2 btn clicked")
class Widget1(QWidget):
def __init__(self):
super().__init__()
self.start = 50
self.end = 50
quit = QAction("Quit", self)
quit.triggered.connect(self.close)
addbtn = QPushButton('Add Window', self)
addbtn.clicked.connect(self.addbtnclicked)
addbtn.resize(addbtn.sizeHint())
addbtn.move(50, 50)
quitbtn = QPushButton('Quit', self)
quitbtn.clicked.connect(QApplication.instance().quit)
quitbtn.resize(quitbtn.sizeHint())
quitbtn.move(50, 100)
self.popups = []
def addbtnclicked(self):
print("Add Button Clicked!!")
wdgt2 = Widget2()
wdgt2.show()
if self.start > 1600:
self.start = 50
self.end = self.end + 250
wdgt2.setGeometry(self.start, self.end, 200, 200)
self.popups.append(wdgt2)
self.start = self.start + 250
def closeEvent(self, event):
print("In Close Event")
QApplication.closeAllWindows()
def main():
app = QApplication(sys.argv)
ex = Widget1()
ex.show()
ex.setGeometry(800, 600, 200, 200)
sys.exit(app.exec_())
if __name__ == '__main__':
main()

Display real time data with PyQt and Raspberry

I am currently using the Raspberry Pi 3 to collect data from a temperature and humidity sensor (DHT11) and then display it in a QTextEdit using PyQt4.
The problem is that I would like to do this in real time but I cannot update the data automatically into the interface. Does anyone have any idea about how I can do this?
PS: Here is the link to install Adafruit if you are interested.
Have a good day,
import time
import Adafruit_DHT
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_Room1(object):
def AffichT(self):
sensor=11
pin=4
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
if temperature is not None:
print('Temp={0:0.1f}* Humidity={1:0.1f}%'.format(temperature, humidity))
return str(temperature)
else:
print('Failed to get reading. Try again!')
sys.exit(1)
def AffichH(self):
sensor=11
pin=4
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
if humidity is not None:
return str(humidity)
else:
print('Failed to get reading. Try again!')
sys.exit(1)
def setupUi(self, Room1):
Room1.setObjectName(_fromUtf8("Room1"))
Room1.resize(674, 422)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(Room1.sizePolicy().hasHeightForWidth())
Room1.setSizePolicy(sizePolicy)
Room1.setMouseTracking(False)
Room1.setStyleSheet(_fromUtf8("image: url(:/gradient1/Images/gradient1.png);\n"
"\n"
""))
self.centralwidget = QtGui.QWidget(Room1)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.centralwidget.sizePolicy().hasHeightForWidth())
self.centralwidget.setSizePolicy(sizePolicy)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.graphicsView = QtGui.QGraphicsView(self.centralwidget)
self.graphicsView.setGeometry(QtCore.QRect(610, 30, 41, 41))
self.graphicsView.setStyleSheet(_fromUtf8("background-color: transparent;\n"
"background-image: url(:/gradient1/Images/logout.png);\n"
"background-repeat: no;"))
self.graphicsView.setFrameShape(QtGui.QFrame.NoFrame)
self.graphicsView.setObjectName(_fromUtf8("graphicsView"))
self.label = QtGui.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(270, 50, 131, 31))
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
self.label.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setPointSize(18)
font.setBold(True)
font.setWeight(75)
self.label.setFont(font)
self.label.setStyleSheet(_fromUtf8("image : none;\n"
"color: #fff;\n"
"background-color: transparent;"))
self.label.setObjectName(_fromUtf8("label"))
self.label_2 = QtGui.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(140, 170, 101, 61))
self.label_2.setStyleSheet(_fromUtf8("image: none;\n"
"color: #fff;\n"
"background-color: #347;"))
self.label_2.setObjectName(_fromUtf8("label_2"))
self.label_3 = QtGui.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(140, 260, 101, 61))
self.label_3.setStyleSheet(_fromUtf8("image: none;\n"
"color: #fff;\n"
"background-color: #347;"))
self.label_3.setObjectName(_fromUtf8("label_3"))
self.label_4 = QtGui.QLabel(self.centralwidget)
self.label_4.setGeometry(QtCore.QRect(300, 170, 101, 61))
self.label_4.setStyleSheet(_fromUtf8("image: none;\n"
"color: #fff;\n"
"background-color: #347;"))
temp = self.AffichT()
self.label_4.setText(_fromUtf8(temp+"°"))
self.label_4.setObjectName(_fromUtf8("label_4"))
self.label_5 = QtGui.QLabel(self.centralwidget)
self.label_5.setGeometry(QtCore.QRect(300, 260, 101, 61))
self.label_5.setStyleSheet(_fromUtf8("image: none;\n"
"color: #fff;\n"
"background-color: #347;"))
hum = self.AffichH()
self.label_5.setText(_fromUtf8(hum)+"%")
self.label_5.setObjectName(_fromUtf8("label_5"))
Room1.setCentralWidget(self.centralwidget)
self.retranslateUi(Room1)
QtCore.QMetaObject.connectSlotsByName(Room1)
def retranslateUi(self, Room1):
Room1.setWindowTitle(_translate("Room1", "Parents Room", None))
self.label.setText(_translate("Room1", "Welcome !", None))
self.label_2.setText(_translate("Room1", "Température:", None))
self.label_3.setText(_translate("Room1", "Humidité:", None))
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
Room1 = QtGui.QMainWindow()
ui = Ui_Room1()
ui.setupUi(Room1)
Room1.show()
sys.exit(app.exec_())`
The following must be taken into account:
Reading a temperature sensor takes time, in the case of DHT it consumes 2 seconds, this is not a general disadvantage since the ambient temperature does not vary rapidly.
As the reading task is very time consuming, it should not be executed in the main thread but in a secondary one and send the information through signals.
import time
import threading
import Adafruit_DHT
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_Room1(object):
def setupUi(self, Room1):
Room1.setObjectName(_fromUtf8("Room1"))
Room1.resize(674, 422)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(Room1.sizePolicy().hasHeightForWidth())
Room1.setSizePolicy(sizePolicy)
Room1.setMouseTracking(False)
Room1.setStyleSheet(
_fromUtf8("image: url(:/gradient1/Images/gradient1.png);\n" "\n" "")
)
self.centralwidget = QtGui.QWidget(Room1)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(
self.centralwidget.sizePolicy().hasHeightForWidth()
)
self.centralwidget.setSizePolicy(sizePolicy)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.graphicsView = QtGui.QGraphicsView(self.centralwidget)
self.graphicsView.setGeometry(QtCore.QRect(610, 30, 41, 41))
self.graphicsView.setStyleSheet(
_fromUtf8(
"background-color: transparent;\n"
"background-image: url(:/gradient1/Images/logout.png);\n"
"background-repeat: no;"
)
)
self.graphicsView.setFrameShape(QtGui.QFrame.NoFrame)
self.graphicsView.setObjectName(_fromUtf8("graphicsView"))
self.label = QtGui.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(270, 50, 131, 31))
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
self.label.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setPointSize(18)
font.setBold(True)
font.setWeight(75)
self.label.setFont(font)
self.label.setStyleSheet(
_fromUtf8(
"image : none;\n" "color: #fff;\n" "background-color: transparent;"
)
)
self.label.setObjectName(_fromUtf8("label"))
self.label_2 = QtGui.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(140, 170, 101, 61))
self.label_2.setStyleSheet(
_fromUtf8("image: none;\n" "color: #fff;\n" "background-color: #347;")
)
self.label_2.setObjectName(_fromUtf8("label_2"))
self.label_3 = QtGui.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(140, 260, 101, 61))
self.label_3.setStyleSheet(
_fromUtf8("image: none;\n" "color: #fff;\n" "background-color: #347;")
)
self.label_3.setObjectName(_fromUtf8("label_3"))
self.label_4 = QtGui.QLabel(self.centralwidget)
self.label_4.setGeometry(QtCore.QRect(300, 170, 101, 61))
self.label_4.setStyleSheet(
_fromUtf8("image: none;\n" "color: #fff;\n" "background-color: #347;")
)
self.label_4.setObjectName(_fromUtf8("label_4"))
self.label_5 = QtGui.QLabel(self.centralwidget)
self.label_5.setGeometry(QtCore.QRect(300, 260, 101, 61))
self.label_5.setStyleSheet(
_fromUtf8("image: none;\n" "color: #fff;\n" "background-color: #347;")
)
self.label_5.setObjectName(_fromUtf8("label_5"))
Room1.setCentralWidget(self.centralwidget)
self.retranslateUi(Room1)
QtCore.QMetaObject.connectSlotsByName(Room1)
def retranslateUi(self, Room1):
Room1.setWindowTitle(_translate("Room1", "Parents Room", None))
self.label.setText(_translate("Room1", "Welcome !", None))
self.label_2.setText(_translate("Room1", "Température:", None))
self.label_3.setText(_translate("Room1", "Humidité:", None))
class Adafruit_DHT_Worker(QtCore.QObject):
valueChanged = QtCore.pyqtSignal(float, float)
def start(self):
threading.Thread(target=self._read, daemon=True).start()
def _read(self):
sensor=11
pin=4
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
if humidity is not None and temperature is not None:
self.valueChanged.emit(temperature, humidity)
class Room1(QtGui.QMainWindow, Ui_Room1):
def __init__(self, parent=None):
super().__init__(parent)
self.setupUi(self)
self.dht_worker = Adafruit_DHT_Worker()
self.dht_worker.valueChanged.connect(self.on_value_changed)
self.dht_worker.start()
#QtCore.pyqtSlot(float, float)
def on_value_changed(self, humidity, temperature):
self.label_4.setNum(temperature)
self.label_5.setNum(humidity)
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
w = Room1()
w.show()
sys.exit(app.exec_())

i tried to insert data in a table but the data is not storing in the table [duplicate]

This question already has an answer here:
Python Sqlite3 - Data is not saved permanently
(1 answer)
Closed 3 years ago.
from PyQt5 import QtCore, QtGui, QtWidgets
import sqlite3
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(1039, 584)
self.image_label = QtWidgets.QLabel(Form)
self.image_label.setGeometry(QtCore.QRect(10, 0, 801, 511))
self.image_label.setObjectName("image_label")
self.control_bt = QtWidgets.QPushButton(Form)
self.control_bt.setGeometry(QtCore.QRect(890, 340, 93, 28))
self.control_bt.setObjectName("control_bt")
self.label_2 = QtWidgets.QLabel(Form)
self.label_2.setGeometry(QtCore.QRect(860, 240, 158, 51))
self.label_2.setObjectName("label_2")
self.lineEdit_2 = QtWidgets.QLineEdit(Form)
self.lineEdit_2.setGeometry(QtCore.QRect(860, 280, 158, 24))
self.lineEdit_2.setObjectName("lineEdit_2")
self.pushButton = QtWidgets.QPushButton(Form)
self.pushButton.setGeometry(QtCore.QRect(890, 310, 93, 28))
self.pushButton.setObjectName("pushButton")
self.lineEdit = QtWidgets.QLineEdit(Form)
self.lineEdit.setGeometry(QtCore.QRect(880, 230, 113, 22))
self.lineEdit.setObjectName("lineEdit")
self.label = QtWidgets.QLabel(Form)
self.label.setGeometry(QtCore.QRect(910, 210, 55, 16))
self.label.setObjectName("label")
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Face detection"))
self.image_label.setText(_translate("Form", " FACE DETECTION"))
self.control_bt.setText(_translate("Form", "Start"))
self.label_2.setText(_translate("Form", " Enter name of person"))
self.pushButton.setText(_translate("Form", "click to save"))
self.label.setText(_translate("Form", "enter id"))
self.pushButton.clicked.connect(self.InsertData)``
def InsertData(self):
import sqlite3
id=self.lineEdit.text()
name=str(self.lineEdit_2.text())
conn=sqlite3.connect('B.db')
curs=conn.cursor()
curs.execute("INSERT INTO register (id,name) VALUES ('"+id+"','"+name+"');")
print(id,name)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
you do not need to import sqlite3 within your function again, then after your query commit your connection
conn.commit()

Plot not updating qt GUI and pyqtgraph Python

As the title says, my plot does not update. The objetive is to initiate the plot when the button is clicked. The window pops up and the axis are formed, but no curve is plotted. i used pyqt5 in qt designer fr the GUI and pyqtgraph for the plot. if i wanted to add more plots in the same window whats the optimal way to do it. Thanks
Code:
from PyQt5 import QtCore, QtGui, QtWidgets
import os,serial,jeje_rc
os.environ["TF_CPP_MIN_LOG_LEVEL"]="3"
import numpy as np
import pyqtgraph as pg
class Ui_MainWindow(object):
def ser(self):
self.raw = serial.Serial('COM4', 9600)
self.raw.close()
self.raw.open()
def update(self):
self.datos = self.raw.readline()
self.datos1 = self.datos.decode().split(',')
self.y1[self.m] = self.datos1[0]
if self.m == 99:
self.y1 = np.zeros(100, dtype=float)
self.m = 0
else:
self.m += 1
self.curva1.setData(self.y1)
app.processEvents()
def start(self):
self.ser()
self.win = pg.GraphicsWindow()
self.win.setWindowTitle('Datos de arduino')
self.p1 = self.win.addPlot()
self.p1.setYRange(0, 1024, padding=0)
self.curva1 = self.p1.plot()
self.datos = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
self.y1 = np.zeros(100, dtype=float)
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.setWindowTitle("ECG de 12 Derivaciones UAO")
MainWindow.resize(800, 550)
self.m=0
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setMaximumSize(QtCore.QSize(805, 510))
self.centralwidget.setObjectName("centralwidget")
self.centralwidget.setWindowTitle("ECG de 12 Derivaciones UAO")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(20, 270, 241, 19))
self.label.setObjectName("label")
self.line = QtWidgets.QFrame(self.centralwidget)
self.line.setGeometry(QtCore.QRect(10, 230, 781, 20))
self.line.setFrameShape(QtWidgets.QFrame.HLine)
self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line.setObjectName("line")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(600, 40, 181, 171))
self.label_2.setObjectName("label_2")
self.label_3 = QtWidgets.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(40, 10, 591, 41))
font = QtGui.QFont()
font.setPointSize(16)
self.label_3.setFont(font)
self.label_3.setObjectName("label_3")
self.label_4 = QtWidgets.QLabel(self.centralwidget)
self.label_4.setGeometry(QtCore.QRect(170, 150, 221, 41))
font = QtGui.QFont()
font.setPointSize(11)
self.label_4.setFont(font)
self.label_4.setObjectName("label_4")
self.label_5 = QtWidgets.QLabel(self.centralwidget)
self.label_5.setGeometry(QtCore.QRect(110, 190, 471, 41))
font = QtGui.QFont()
font.setPointSize(11)
self.label_5.setFont(font)
self.label_5.setObjectName("label_5")
self.label_6 = QtWidgets.QLabel(self.centralwidget)
self.label_6.setGeometry(QtCore.QRect(50, 100, 521, 51))
font = QtGui.QFont()
font.setPointSize(9)
self.label_6.setFont(font)
self.label_6.setObjectName("label_6")
self.lineEdad = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdad.setGeometry(QtCore.QRect(110, 310, 261, 21))
self.lineEdad.setObjectName("lineEdad")
self.lineNombre = QtWidgets.QLineEdit(self.centralwidget)
self.lineNombre.setGeometry(QtCore.QRect(110, 270, 261, 20))
self.lineNombre.setObjectName("lineNombre")
self.BotonInicio = QtWidgets.QPushButton(self.centralwidget)
self.BotonInicio.setGeometry(QtCore.QRect(490, 290, 181, 41))
self.BotonInicio.setObjectName("BotonInicio")
self.BotonInicio.clicked.connect(self.start)
self.label_7 = QtWidgets.QLabel(self.centralwidget)
self.label_7.setGeometry(QtCore.QRect(20, 310, 68, 19))
self.label_7.setObjectName("label_7")
self.label_8 = QtWidgets.QLabel(self.centralwidget)
self.label_8.setGeometry(QtCore.QRect(20, 350, 61, 19))
self.label_8.setObjectName("label_8")
self.label_9 = QtWidgets.QLabel(self.centralwidget)
self.label_9.setGeometry(QtCore.QRect(20, 380, 111, 31))
self.label_9.setObjectName("label_9")
self.BoxGenero = QtWidgets.QComboBox(self.centralwidget)
self.BoxGenero.setGeometry(QtCore.QRect(110, 350, 92, 25))
self.BoxGenero.setObjectName("BoxGenero")
self.BoxGenero.addItem("")
self.BoxGenero.addItem("")
self.plainTextPatologias = QtWidgets.QPlainTextEdit(self.centralwidget)
self.plainTextPatologias.setGeometry(QtCore.QRect(110, 390, 261, 91))
self.plainTextPatologias.setObjectName("plainTextPatologias")
self.line_2 = QtWidgets.QFrame(self.centralwidget)
self.line_2.setGeometry(QtCore.QRect(390, 250, 20, 241))
self.line_2.setFrameShape(QtWidgets.QFrame.VLine)
self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_2.setObjectName("line_2")
self.BotonExportar = QtWidgets.QPushButton(self.centralwidget)
self.BotonExportar.setGeometry(QtCore.QRect(490, 410, 181, 41))
self.BotonExportar.setObjectName("BotonExportar")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 805, 31))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
timer = QtCore.QTimer()
timer.timeout.connect(self.update)
timer.start(0)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "ECG de 12 Derivaciones"))
self.label.setText(_translate("MainWindow", "Nombre:"))
self.label_2.setText(_translate("MainWindow", "<html><head/><body><p><img src=\":/newPrefix/logo-universidad-autonoma-de-occidente.png\"/></p></body></html>"))
self.label_3.setText(_translate("MainWindow", "Electrocardiógrafo De 12 Derivaciones"))
self.label_4.setText(_translate("MainWindow", "Facultad de ingenieria"))
self.label_5.setText(_translate("MainWindow", " Universidad Autonoma De Occidente"))
self.label_6.setText(_translate("MainWindow", "Por: Mario Gomez, Viviana Calero, Sara Chillito, Stefania Calderon"))
self.BotonInicio.setText(_translate("MainWindow", "Inicio del programa"))
self.label_7.setText(_translate("MainWindow", "Edad:"))
self.label_8.setText(_translate("MainWindow", "Genero:"))
self.label_9.setText(_translate("MainWindow", "Patologias:"))
self.BoxGenero.setItemText(0, _translate("MainWindow", "Hombre"))
self.BoxGenero.setItemText(1, _translate("MainWindow", "Mujer"))
self.BotonExportar.setText(_translate("MainWindow", "Exportar datos"))
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_())
It is recommended not to modify the code provided by Qt Designer since if you want to modify the design you will have to rewrite your code, besides the Ui_MainWindow class is not a widget but a class that is used to fill some widget, so I recommend deleting the changes .
On the other hand is not suitable to run with a timer with a range of 0, since it does not allow updating the GUI, on the other hand the reading of the serial is blocking, so a possible solution is to use QThread, and use a signal to update the data in the GUI thread.
class Ui_MainWindow(object):
...
class ArduinoThread(QtCore.QThread):
dataChanged = QtCore.pyqtSignal(str)
def __init__(self, *args, **kwargs):
QtCore.QThread.__init__(self, *args, **kwargs)
self.raw = serial.Serial('com4', 9600)
self.raw.close()
self.raw.open()
def run(self):
while True:
datos_array = self.raw.readline().decode().split(',')
if datos_array:
datos = datos_array[0]
self.dataChanged.emit(datos)
QtCore.QThread.msleep(10)
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self, *args, **kwargs):
QtWidgets.QMainWindow.__init__(self, *args, **kwargs)
self.setupUi(self)
self.BotonInicio.clicked.connect(self.start)
self.m = 0
def update_plot(self, dato):
if self.m > 99:
self.y1 = np.zeros(100, dtype=float)
self.m = 0
else:
self.y1[self.m] = dato
self.m += 1
self.curva1.setData(self.y1)
def start(self):
thread = ArduinoThread(self)
thread.dataChanged.connect(self.update_plot)
thread.start()
self.win = pg.GraphicsWindow()
self.win.setWindowTitle('Datos de arduino')
self.p1 = self.win.addPlot()
self.p1.setYRange(0, 1024, padding=0)
self.curva1 = self.p1.plot()
self.y1 = np.zeros(100, dtype=float)
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
As you can see, I have made some changes to improve the application as verifications, use variables when necessary, etc.
Although a way compatible with Qt is to use QSerialPort that emits the readyRead signal when there is a new data:
from PyQt5 import QtCore, QtGui, QtWidgets, QtSerialPort
....
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self, *args, **kwargs):
QtWidgets.QMainWindow.__init__(self, *args, **kwargs)
self.setupUi(self)
self.BotonInicio.clicked.connect(self.start)
def update_plot(self):
while self.ser.canReadLine():
line = bytearray(self.ser.readLine()).decode()
self.processLine(line)
def processLine(self, line):
datos_array = line.strip().split(',')
if datos_array:
dato = datos_array[0]
if self.m > 99:
self.y1 = np.zeros(100, dtype=float)
self.m = 0
else:
self.y1[self.m] = dato
self.m += 1
self.curva1.setData(self.y1)
def start(self):
self.ser = QtSerialPort.QSerialPort("com4", self)
self.ser.setBaudRate(9600)
self.ser.readyRead.connect(self.update_plot)
self.ser.open(QtSerialPort.QSerialPort.ReadOnly)
self.win = pg.GraphicsWindow()
self.win.setWindowTitle('Datos de arduino')
self.p1 = self.win.addPlot()
self.p1.setYRange(0, 1024, padding=0)
self.curva1 = self.p1.plot()
self.y1 = np.zeros(100, dtype=float)
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())

Cant start gui aplication created with Qt4 and Python 3.4 and Unable to find QStringList class

I create GUI Design in Qt4 and you can see the Design here.
Than, with pyuic4 i converted design into GuiVezba2DialogQt4.py.
Here you can see a Code for that class:
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName(_fromUtf8("Dialog"))
Dialog.resize(554, 407)
self.horizontalLayoutWidget = QtGui.QWidget(Dialog)
self.horizontalLayoutWidget.setGeometry(QtCore.QRect(40, 10, 411, 61))
self.horizontalLayoutWidget.setObjectName(_fromUtf8("horizontalLayoutWidget"))
self.horizontalLayout = QtGui.QHBoxLayout(self.horizontalLayoutWidget)
self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
self.pushButton = QtGui.QPushButton(self.horizontalLayoutWidget)
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.horizontalLayout.addWidget(self.pushButton)
self.pushButton_2 = QtGui.QPushButton(self.horizontalLayoutWidget)
self.pushButton_2.setObjectName(_fromUtf8("pushButton_2"))
self.horizontalLayout.addWidget(self.pushButton_2)
self.pushButton_3 = QtGui.QPushButton(self.horizontalLayoutWidget)
self.pushButton_3.setObjectName(_fromUtf8("pushButton_3"))
self.horizontalLayout.addWidget(self.pushButton_3)
self.horizontalLayoutWidget_2 = QtGui.QWidget(Dialog)
self.horizontalLayoutWidget_2.setGeometry(QtCore.QRect(40, 70, 411, 41))
self.horizontalLayoutWidget_2.setObjectName(_fromUtf8("horizontalLayoutWidget_2"))
self.horizontalLayout_2 = QtGui.QHBoxLayout(self.horizontalLayoutWidget_2)
self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
self.label_20 = QtGui.QLabel(self.horizontalLayoutWidget_2)
self.label_20.setObjectName(_fromUtf8("label_20"))
self.horizontalLayout_2.addWidget(self.label_20)
self.label_21 = QtGui.QLabel(self.horizontalLayoutWidget_2)
self.label_21.setObjectName(_fromUtf8("label_21"))
self.horizontalLayout_2.addWidget(self.label_21)
self.label_22 = QtGui.QLabel(self.horizontalLayoutWidget_2)
self.label_22.setObjectName(_fromUtf8("label_22"))
self.horizontalLayout_2.addWidget(self.label_22)
self.groupBox = QtGui.QGroupBox(Dialog)
self.groupBox.setGeometry(QtCore.QRect(10, 130, 291, 171))
self.groupBox.setObjectName(_fromUtf8("groupBox"))
self.label = QtGui.QLabel(self.groupBox)
self.label.setGeometry(QtCore.QRect(10, 20, 91, 21))
self.label.setObjectName(_fromUtf8("label"))
self.lineEdit = QtGui.QLineEdit(self.groupBox)
self.lineEdit.setGeometry(QtCore.QRect(170, 20, 51, 20))
self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
self.pushButton_4 = QtGui.QPushButton(self.groupBox)
self.pushButton_4.setGeometry(QtCore.QRect(160, 130, 75, 23))
self.pushButton_4.setObjectName(_fromUtf8("pushButton_4"))
self.label_4 = QtGui.QLabel(self.groupBox)
self.label_4.setGeometry(QtCore.QRect(170, 70, 111, 16))
self.label_4.setObjectName(_fromUtf8("label_4"))
self.label_9 = QtGui.QLabel(self.groupBox)
self.label_9.setGeometry(QtCore.QRect(170, 110, 111, 16))
self.label_9.setObjectName(_fromUtf8("label_9"))
self.label_3 = QtGui.QLabel(self.groupBox)
self.label_3.setGeometry(QtCore.QRect(170, 50, 111, 16))
self.label_3.setObjectName(_fromUtf8("label_3"))
self.label_5 = QtGui.QLabel(self.groupBox)
self.label_5.setGeometry(QtCore.QRect(170, 90, 111, 16))
self.label_5.setObjectName(_fromUtf8("label_5"))
self.label_2 = QtGui.QLabel(self.groupBox)
self.label_2.setGeometry(QtCore.QRect(10, 50, 131, 16))
self.label_2.setObjectName(_fromUtf8("label_2"))
self.label_12 = QtGui.QLabel(self.groupBox)
self.label_12.setGeometry(QtCore.QRect(10, 70, 131, 16))
self.label_12.setObjectName(_fromUtf8("label_12"))
self.label_13 = QtGui.QLabel(self.groupBox)
self.label_13.setGeometry(QtCore.QRect(10, 90, 131, 16))
self.label_13.setObjectName(_fromUtf8("label_13"))
self.label_14 = QtGui.QLabel(self.groupBox)
self.label_14.setGeometry(QtCore.QRect(10, 110, 131, 16))
self.label_14.setObjectName(_fromUtf8("label_14"))
self.label_15 = QtGui.QLabel(self.groupBox)
self.label_15.setGeometry(QtCore.QRect(10, 130, 131, 16))
self.label_15.setObjectName(_fromUtf8("label_15"))
self.groupBox_2 = QtGui.QGroupBox(Dialog)
self.groupBox_2.setGeometry(QtCore.QRect(310, 130, 241, 171))
self.groupBox_2.setObjectName(_fromUtf8("groupBox_2"))
self.label_10 = QtGui.QLabel(self.groupBox_2)
self.label_10.setGeometry(QtCore.QRect(10, 30, 71, 16))
self.label_10.setObjectName(_fromUtf8("label_10"))
self.lineEdit_2 = QtGui.QLineEdit(self.groupBox_2)
self.lineEdit_2.setGeometry(QtCore.QRect(140, 30, 71, 20))
self.lineEdit_2.setInputMask(_fromUtf8(""))
self.lineEdit_2.setText(_fromUtf8(""))
self.lineEdit_2.setObjectName(_fromUtf8("lineEdit_2"))
self.label_6 = QtGui.QLabel(self.groupBox_2)
self.label_6.setGeometry(QtCore.QRect(140, 60, 61, 16))
self.label_6.setObjectName(_fromUtf8("label_6"))
self.label_7 = QtGui.QLabel(self.groupBox_2)
self.label_7.setGeometry(QtCore.QRect(140, 80, 71, 16))
self.label_7.setObjectName(_fromUtf8("label_7"))
self.label_8 = QtGui.QLabel(self.groupBox_2)
self.label_8.setGeometry(QtCore.QRect(140, 100, 71, 16))
self.label_8.setObjectName(_fromUtf8("label_8"))
self.label_11 = QtGui.QLabel(self.groupBox_2)
self.label_11.setGeometry(QtCore.QRect(140, 120, 71, 16))
self.label_11.setObjectName(_fromUtf8("label_11"))
self.pushButton_5 = QtGui.QPushButton(self.groupBox_2)
self.pushButton_5.setGeometry(QtCore.QRect(130, 140, 75, 23))
self.pushButton_5.setObjectName(_fromUtf8("pushButton_5"))
self.label_19 = QtGui.QLabel(self.groupBox_2)
self.label_19.setGeometry(QtCore.QRect(0, 80, 121, 16))
self.label_19.setObjectName(_fromUtf8("label_19"))
self.label_18 = QtGui.QLabel(self.groupBox_2)
self.label_18.setGeometry(QtCore.QRect(0, 60, 131, 16))
self.label_18.setObjectName(_fromUtf8("label_18"))
self.label_17 = QtGui.QLabel(self.groupBox_2)
self.label_17.setGeometry(QtCore.QRect(0, 100, 131, 16))
self.label_17.setObjectName(_fromUtf8("label_17"))
self.label_16 = QtGui.QLabel(self.groupBox_2)
self.label_16.setGeometry(QtCore.QRect(0, 120, 131, 16))
self.label_16.setObjectName(_fromUtf8("label_16"))
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
Dialog.setWindowTitle(_translate("Dialog", "Dialog", None))
self.pushButton.setText(_translate("Dialog", "Button1", None))
self.pushButton_2.setText(_translate("Dialog", "Button2", None))
self.pushButton_3.setText(_translate("Dialog", "Button3", None))
self.label_20.setText(_translate("Dialog", "Konektuj se na bazu", None))
self.label_21.setText(_translate("Dialog", "Ucitaj Detaljne Tacke", None))
self.label_22.setText(_translate("Dialog", "Ucitaj Parcele", None))
self.groupBox.setTitle(_translate("Dialog", "GroupBox1", None))
self.label.setText(_translate("Dialog", "Oznaka Parcele:", None))
self.pushButton_4.setText(_translate("Dialog", "Button4", None))
self.label_4.setText(_translate("Dialog", "label4", None))
self.label_9.setText(_translate("Dialog", "label9", None))
self.label_3.setText(_translate("Dialog", "label3", None))
self.label_5.setText(_translate("Dialog", "label5", None))
self.label_2.setText(_translate("Dialog", "Povrsina parcele je:", None))
self.label_12.setText(_translate("Dialog", "Broj Prelomnih Tacaka je:", None))
self.label_13.setText(_translate("Dialog", "Nacin koriscenja je:", None))
self.label_14.setText(_translate("Dialog", "WKT format geometrije je:", None))
self.label_15.setText(_translate("Dialog", "Ucitaj podatke:", None))
self.groupBox_2.setTitle(_translate("Dialog", "GroupBox2", None))
self.label_10.setText(_translate("Dialog", "Broj Tacke", None))
self.label_6.setText(_translate("Dialog", "label6", None))
self.label_7.setText(_translate("Dialog", "label7", None))
self.label_8.setText(_translate("Dialog", "label8", None))
self.label_11.setText(_translate("Dialog", "label11", None))
self.pushButton_5.setText(_translate("Dialog", "Button5", None))
self.label_19.setText(_translate("Dialog", "Koordinata Y je:", None))
self.label_18.setText(_translate("Dialog", "Koordinata X je:", None))
self.label_17.setText(_translate("Dialog", "Da li ucestvuje u parceli:", None))
self.label_16.setText(_translate("Dialog", "WKT oblik Geometrije", None))
Than in my main python file - Vezba2.py I have this:
import pypyodbc
import DetaljnaTacka
import Poligon
import Parcela
from GuiVezba2DialogQt4 import *
import sys
class MyForm(QtGui.QDialog):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.ui = Ui_Dialog()
self.ui.setupUi(self)
QtCore.QObject.connect(self.ui.pushButton_4, QtCore.SIGNAL('clicked()'),self.
dispmessage)
def dispmessage(self):
self.ui.label_10.setText("Hello ")
if __name__ == "__main__":
app = QtGui.QGuiApplication(sys.argv)
myapp = MyForm()
myapp.show()
sys.exit(app.exec_())
When i Run program, with debagger i put Break point at myapp=MyForm(). When that step try to execute, program is over. I don't see created GUI and i dont see any error.
What should i do please?
Thank you.
I made i mistake. I typed:
app = QtGui.QGuiApplication instead app = QtGui.QApplication

Resources