Add signals list, search bar, picture display

This commit is contained in:
alessandro90
2018-09-22 14:44:24 +02:00
parent 0da29ef3f2
commit c5488ef7ad
3 changed files with 283 additions and 61 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

45
main.py
View File

@@ -1,9 +1,12 @@
import sys
import os
from pandas import read_csv
from PyQt5.QtWidgets import (QMainWindow,
QApplication,)
QApplication,
QMessageBox,)
from PyQt5.QtGui import QPixmap
from PyQt5 import uic
from PyQt5.QtCore import QFileInfo
qt_creator_file = "main_window.ui"
@@ -13,9 +16,47 @@ class MyApp(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.show()
self.load_db()
self.display_signals()
self.search_bar.textChanged.connect(self.display_signals)
self.result_list.itemSelectionChanged.connect(self.display_spectrogram)
def load_db(self):
try:
db = read_csv(os.path.join('Data', 'db.csv'),
sep = '*',
header = None,
prefix = 'signal_')
except FileNotFoundError:
self.signal_names = ''
self.search_bar.setDisabled(True)
box = QMessageBox(self)
box.setStyleSheet("""
color:#FFFFFF;
""")
box.setWindowTitle("No database")
box.setText("No database available.\n"
"Go to Updates->Download database.")
box.show()
else:
self.signal_names = db['signal_0']
def display_signals(self):
self.result_list.clear()
for signal in self.signal_names:
if self.search_bar.text().lower() in signal.lower():
self.result_list.addItem(signal)
def display_spectrogram(self):
spectrogram_name = self.result_list.currentItem().text()
path_spectr = os.path.join("Data", "Spectra", spectrogram_name + ".jpg")
if not QFileInfo(path_spectr).exists():
path_spectr = os.path.join("icons_imgs", "image_not_found.png")
self.spectrogram.setPixmap(QPixmap(path_spectr))
if __name__ == '__main__':
my_app = QApplication(sys.argv)
w = MyApp()
w.show()
sys.exit(my_app.exec_())

View File

@@ -6,76 +6,131 @@
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>527</height>
<width>1000</width>
<height>800</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<property name="styleSheet">
<string notr="true">background-color: #464646</string>
<string notr="true">QWidget {
background-color: #464646
}
QPushButton {
color: #FFFFFF
}
QProgressBar {
/*border: 2px solid grey;*/
border-radius: 8px;
background-color: #7a7a7a
}
QProgressBar::chunk {
background-color: #1d5eff;
width: 20px;
border-radius: 7px
}
</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout">
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QSplitter" name="splitter">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<widget class="QWidget" name="">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLineEdit" name="search_bar">
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string>Search a signal name.</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(255, 255, 255);
<widget class="QWidget" name="widget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="baseSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="spacing">
<number>2</number>
</property>
<item row="0" column="0">
<widget class="QLineEdit" name="search_bar">
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string>Search a signal name.</string>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(255, 255, 255);
border: 1px solid gray;
border-radius: 5px;</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="search_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
<property name="baseSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap>icons_imgs/search_icon.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</property>
</widget>
</item>
<item>
<item row="0" column="1">
<widget class="QLabel" name="search_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
<property name="baseSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap>icons_imgs/search_icon.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QListWidget" name="result_list">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
@@ -83,10 +138,22 @@ border-radius: 5px;</string>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string/>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(255, 255, 255);
border: 1px solid gray;
border-radius: 15px;</string>
<string notr="true">QListWidget {
color: rgb(255, 255, 255);
border: 1px solid gray;
border-radius: 10px;
}
</string>
</property>
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAsNeeded</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAsNeeded</enum>
</property>
</widget>
</item>
@@ -96,6 +163,12 @@ border-radius: 15px;</string>
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
@@ -152,9 +225,105 @@ QTabBar::tab:!selected {
<bool>true</bool>
</property>
<widget class="QWidget" name="tab">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="baseSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<attribute name="title">
<string>Main</string>
</attribute>
<widget class="QLabel" name="spectrogram">
<property name="geometry">
<rect>
<x>480</x>
<y>280</y>
<width>221</width>
<height>421</height>
</rect>
</property>
<property name="text">
<string/>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget>
<widget class="QWidget" name="widget_2" native="true">
<property name="geometry">
<rect>
<x>50</x>
<y>120</y>
<width>371</width>
<height>381</height>
</rect>
</property>
<widget class="QPushButton" name="pushButton">
<property name="geometry">
<rect>
<x>40</x>
<y>40</y>
<width>75</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_2">
<property name="geometry">
<rect>
<x>140</x>
<y>40</y>
<width>75</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_3">
<property name="geometry">
<rect>
<x>240</x>
<y>40</y>
<width>75</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
<widget class="QProgressBar" name="progressBar">
<property name="geometry">
<rect>
<x>110</x>
<y>90</y>
<width>118</width>
<height>23</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="value">
<number>15</number>
</property>
<property name="textVisible">
<bool>false</bool>
</property>
</widget>
</widget>
</widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
@@ -171,12 +340,24 @@ QTabBar::tab:!selected {
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<width>1000</width>
<height>21</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">color: rgb(255, 255, 255);</string>
<string notr="true">QMenuBar {
color: rgb(255, 255, 255);
}
QMenuBar::item:selected {
background:#999999;
color: #1d5eff
}
QMenu::item:selected {
background-color: #999999;
color: #1d5eff
}</string>
</property>
<widget class="QMenu" name="menuFile">
<property name="styleSheet">