import sys from time import sleep from threading import Thread import _thread import threading from PySide2.QtWidgets import QApplication from PySide2.QtWidgets import QMainWindow from PySide2.QtCore import (QCoreApplication, QDate, QDateTime, QMetaObject, QObject, QPoint, QRect, QSize, QTime, QUrl, Qt) from PySide2.QtGui import (QBrush, QColor, QConicalGradient, QCursor, QFont, QFontDatabase, QIcon, QKeySequence, QLinearGradient, QPalette, QPainter, QPixmap, QRadialGradient, QStandardItem, QStandardItemModel) from PySide2.QtWidgets import * from mainwindow import Ui_MainWindow from kman import * # import binary resource file(kmanapp_rc.py) import kmanapp_rc ONLY_TEST = 0 class kmanWindow(QMainWindow): """ def __init__(self, *args, **kwargs): super(kmanWindow, self).__init__(*args, **kwargs) """ def __init__(self, parent=None): super(kmanWindow, self).__init__(parent) self.stat_str = 'status information' self.search_str = '' self.local_fn = CLIPPATH # create ui and initial it ui = Ui_MainWindow() ui.setupUi(self) self.ui = ui self.km = kMan() self.books = self.km.import_clips('local') # loop check kindle is connected or not # to be implement """ try: #_thread.start_new_thread(self.check_kindle_status) t1 = threading.Thread(target=check_kindle_status) t1.start() except: print ("Error: can not start thread") """ # connect action/toolbutton to slot functions ui.actionimportkindle.triggered.connect(lambda: self.import_kindle(self.books)) ui.actionimportlocal.triggered.connect(lambda: self.import_local()) ui.actionconfig.triggered.connect(lambda: self.config()) ui.actionwords.triggered.connect(lambda: self.words()) ui.actionstatistic.triggered.connect(lambda: self.statistic()) ui.actionhomepage.triggered.connect(lambda: self.homepage()) ui.actionabout.triggered.connect(lambda: self.about()) ui.actionflush.triggered.connect(lambda: self.flush()) ui.searchComboBox.currentIndexChanged.connect(self.search_scope_change) ui.searchToolButton.clicked.connect(self.search_button_clicked) ui.treeView.clicked.connect(self.clicked_items) self.add_ui_component() #add_ui_component() ###! can not found this function def add_ui_component(self): self.ui.searchComboBox.addItems(['ALL','bookname','content','author']) if not ONLY_TEST: # XXXXXXXXXXXXX model = QStandardItemModel() rootItem = model.invisibleRootItem() idx = 0 for i in range(4): idx += 1 item = QStandardItem('item {}'.format(idx)) rootItem.appendRow(item) icon = QIcon() icon.addFile(u":/icons/book_open_bookmark.png", QSize(), QIcon.Normal, QIcon.Off) item.setIcon(icon) if i==0: parentItem = item icon = QIcon() icon.addFile(u":/icons/emblem_library.png", QSize(), QIcon.Normal, QIcon.Off) item.setIcon(icon) parentItem.appendRows([QStandardItem('append rows {}'.format(i+idx)) for i in range(5)]) if i==1: parentItem = item for i in range(5): idx += 1 item = QStandardItem('type item {}'.format(i+idx)) #item.setEnabled(False) item.setEditable(False) icon = QIcon() icon.addFile(u":/icons/register.png", QSize(), QIcon.Normal, QIcon.Off) item.setIcon(icon) parentItem.appendRow(item) if i==3: parentItem = item for i in range(5): idx += 1 item = QStandardItem('another item {}'.format(i+idx)) #item.setEnabled(False) item.setEditable(False) icon = QIcon() icon.addFile(u":/icons/book_open.png", QSize(), QIcon.Normal, QIcon.Off) item.setIcon(icon) parentItem.appendRow(item) self.ui.treeView.setModel(model) def clicked_items(self): print( 'call clicked_items()' ) def search_button_clicked(self): print( 'call search_button_clicked()' ) def search_scope_change(self,t): p = {0:'ALL',1:'TITLE',2:'AUTHOR',3:'CONTENT'} s = self.ui.searchLineEdit.text() #print(self.books) #print(search_clip(self.books,s,'ALL',p[t])) print('call search_scope_change()') def check_kindle_status(self): while True: self.show_status_info() sleep(1) def show_status_info(self): """ show status information on statusbar Args: conn: 1 if kindle is connected else 0 Return: conn """ status = self.km.status_info() self.ui.statusbar.showMessage(status[0],0) clabel = QLabel(status[1]) if not self.km.status: pe = QPalette() pe.setColor(QPalette.WindowText,Qt.red) #clabel.setAutoFillBackground(True) clabel.setPalette(pe) self.ui.statusbar.addPermanentWidget(clabel, stretch=0) # define slot functions def import_kindle(self,bks): status = self.km.status_info() self.show_status_info() print(bks) pass def import_local(self): fn, ft = QFileDialog.getOpenFileName(self, "choose file to import", './', # 起始路径 "All Files (*);;Text Files (*.txt)") # 设置文件扩展名过滤,用双分号间隔 self.fn = fn #print('filename ', fn, 'filetype ', ft) if fn == "": return False def config(self): print("call slot config()") pass def words(self): print("call slot words()") pass def statistic(self): print("call slot statistic()") pass def homepage(self): print("call slot homepage()") pass def about(self): self.messagebox('\n'+ \ ' kindle management tool \n\n' + \ ' v1.0.4\n\n' + \ ' Author: chengan\n\n' + \ ' douboer@gmail.com') print("call slot about()") pass def flush(self): print("call slot flush()") pass # unify messagebox def messagebox(self, showinfo): msgBox = QMessageBox() msgBox.setText(showinfo) msgBox.setInformativeText("") msgBox.setIcon(QMessageBox.Information) msgBox.setStandardButtons(QMessageBox.Cancel | QMessageBox.Ok) msgBox.setBaseSize(QSize(600, 300)) r = msgBox.exec() if __name__ == "__main__": import sys from PySide2.QtWidgets import QApplication, QLabel app = QApplication(sys.argv) kmw = kmanWindow() kmw.resize(900, 600) kmw.show() app.exec_()