ボタンクリックを行うと、ファイルリストで選択されているアイテムの背景色・文字色が変わるようにしたいのですが、設定方法がわかりません。
idx = self.FileList.currentRow()
self.FileList.item(idx).setBackground('color;red')
で何か色が変わらないかと試したのですが変化なく、
エラーも出ずアプリケーションが落ちました。
どなたかお詳しい方ご教示ください。
よろしくお願いします。
python
1# -*- coding: utf-8 -*- 2 3import numpy as np 4from PIL import Image 5import sys 6import pyocr.builders 7import cv2 8import sys 9import os 10 11from PyQt5 import QtWidgets,QtCore 12from PyQt5.QtWidgets import QInputDialog,QProgressBar, QPushButton, QRadioButton,QMessageBox,QLineEdit,QVBoxLayout,QTextEdit,QLabel,QTableWidget, QTableWidgetItem,QGridLayout 13from PyQt5.QtCore import pyqtSlot 14from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas 15import matplotlib.pyplot as plt 16import glob 17 18from PyQt5.QtWidgets import (QWidget, QHBoxLayout, 19 QLabel, QApplication) 20from PyQt5.QtGui import QPixmap 21 22class Application(QtWidgets.QWidget): 23 def __init__(self): 24 super().__init__() 25 # UIの初期化 26 self.initUI() 27 28 # rootディレクトリ 29 self.root = r"C:\Users\ookura\Desktop\" 30 # 拡張子 31 self.ext = 'jpg' 32 33 # ファイルを配置 34 self.set_FileList() 35 36 # 画像 37 self.FileName = self.FileList.item(0).text() 38 39 # 画像を読み込む 40 self.load_ImageFile() 41 42 # Figureの初期化 43 self.initFigure() 44 45 # ファイルを変更した時のイベント 46 self.FileList.itemSelectionChanged.connect(self.FileList_Changed) 47 48 # UIの初期化 49 def initUI(self): 50 # Figure用のWidget 51 self.FigureWidget = QtWidgets.QWidget(self) 52 # FigureWidgetにLayoutを追加 53 self.FigureLayout = QtWidgets.QVBoxLayout(self.FigureWidget) 54 # Marginを消す 55 self.FigureLayout.setContentsMargins(0,0,0,0) 56 # ファイルのリスト 57 self.FileList = QtWidgets.QListWidget(self) 58 #table 59 self.tableWidget = QtWidgets.QTableWidget(self) 60 61 self.hbox = QHBoxLayout(self) # 横方向のレイアウト 62 self.hbox.addWidget(self.FileList) 63 self.hbox.addWidget(self.FigureWidget) 64 #self.hbox.addStretch(0) 65 self.hbox.addWidget(self.tableWidget) 66 self.setLayout(self.hbox) 67 self.resize(1920, 1080) 68 self.createTable() 69 70 self.FileList.move(500,500) 71 #ocrボタン設置 72 btn_test = QPushButton("test", self) 73 btn_test.setStyleSheet("color:black;background-color:white;font-size:14px;font-family:メイリオ;") 74 btn_test.move(1500, 565) 75 # クリックされたらbuttonClickedの呼び出し 76 btn_test.clicked.connect(self.test_buttonClicked) 77 78 # Figureの初期化 79 def initFigure(self): 80 # Figureを作成 81 self.Figure = plt.figure() 82 # FigureをFigureCanvasに追加 83 self.FigureCanvas = FigureCanvas(self.Figure) 84 # LayoutにFigureCanvasを追加 85 self.FigureLayout.addWidget(self.FigureCanvas) 86 87 self.axis = self.Figure.add_subplot(1,1,1) 88 self.axis_image = self.axis.imshow(self.image, cmap='gray') 89 plt.axis('off') 90 91 # ファイルを配置 92 def set_FileList(self): 93 # ファイルの読み込み 94 Files = glob.glob(self.root+'*.'+self.ext) 95 # ソート 96 self.Files = sorted(Files) 97 98 # ファイルリストに追加 99 for file in self.Files: 100 self.FileList.addItem(os.path.basename(file)) 101 102 # ファイルを変更した時の関数 103 def FileList_Changed(self): 104 # 選択しているファイルの名前を取得 105 self.FileName = self.FileList.selectedItems()[0].text() 106 # 画像を読み込み 107 self.load_ImageFile() 108 # Figureを更新 109 self.update_Figure() 110 111 # 画像ファイルを読み込む 112 def load_ImageFile(self): 113 # 画像を開く 114 image = Image.open(self.root + self.FileName) 115 # numpy.ndarrayに 116 self.image = np.asarray(image) 117 118 # Figureを更新 119 def update_Figure(self): 120 self.axis_image.set_data(self.image) 121 self.FigureCanvas.draw() 122 #テーブル 123 def createTable(self): 124 # Create table 125 #self.tableWidget = QTableWidget() 126 self.tableWidget.setRowCount(20) 127 self.tableWidget.setColumnCount(5) 128 self.tableWidget.setItem(0,0, QTableWidgetItem("Cell (1,1)")) 129 self.tableWidget.setItem(0,1, QTableWidgetItem("Cell (1,2)")) 130 self.tableWidget.setItem(0,3, QTableWidgetItem("Cell (2,1)")) 131 self.tableWidget.setItem(0,4, QTableWidgetItem("Cell (2,2)")) 132 self.tableWidget.setItem(0,5, QTableWidgetItem("Cell (3,1)")) 133 self.tableWidget.setItem(0,6, QTableWidgetItem("Cell (3,2)")) 134 self.tableWidget.setItem(3,0, QTableWidgetItem("Cell (4,1)")) 135 self.tableWidget.setItem(3,1, QTableWidgetItem("Cell (4,2)")) 136 self.tableWidget.setItem(0,0, QTableWidgetItem("Cell (1,1)")) 137 self.tableWidget.setItem(0,1, QTableWidgetItem("Cell (1,2)")) 138 self.tableWidget.setItem(1,0, QTableWidgetItem("Cell (2,1)")) 139 self.tableWidget.setItem(1,1, QTableWidgetItem("Cell (2,2)")) 140 self.tableWidget.setItem(2,0, QTableWidgetItem("Cell (3,1)")) 141 self.tableWidget.setItem(2,1, QTableWidgetItem("Cell (3,2)")) 142 self.tableWidget.setItem(3,0, QTableWidgetItem("Cell (4,1)")) 143 self.tableWidget.setItem(3,1, QTableWidgetItem("Cell (4,2)")) 144 self.tableWidget.move(500,1000) 145 146 # table selection change 147 #self.tableWidget.doubleClicked.connect(self.on_click) 148 149 @pyqtSlot() 150 def on_click(self): 151 print("\n") 152 for currentQTableWidgetItem in self.tableWidget.selectedItems(): 153 print(currentQTableWidgetItem.row(), currentQTableWidgetItem.column(), currentQTableWidgetItem.text()) 154 155 def test_buttonClicked(self): 156 print("a") 157 158 159 160#imread再編(.open読み込み不可) 161def imread(filename, flags=cv2.IMREAD_COLOR, dtype=np.uint8): 162 try: 163 n = np.fromfile(filename, dtype) 164 img = cv2.imdecode(n, flags) 165 return img 166 except Exception as e: 167 print(e) 168 return None 169 170#画像加工 171def process(path): 172 img_or = imread(path) 173 174 #dst = cv2.fastNlMeansDenoisingColored(img_or, None, 10, 110, 7, 21) 175 # グレースケール化 176 img_gray = cv2.cvtColor(img_or, cv2.COLOR_RGB2GRAY) 177 # 2値化(100:2値化の閾値/画像を見て調整する) 178 # ret,thresh1 = cv2.threshold(img_gray,100,255,cv2.THRESH_BINARY) 179 ret, thresh1 = cv2.threshold(img_gray, 180, 255, cv2.THRESH_BINARY) 180 # ノイズ処理(モルフォロジー変換) 181 kernel = np.ones((3, 3), np.uint8) 182 img_opening = cv2.morphologyEx(thresh1, cv2.MORPH_OPEN, kernel) 183 184 return img_opening 185#OpenCV型→PIL型に変換 186def cv2pil(image): 187 ''' OpenCV型 -> PIL型 ''' 188 new_image = image.copy() 189 if new_image.ndim == 2: # モノクロ 190 pass 191 elif new_image.shape[2] == 3: # カラー 192 new_image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) 193 elif new_image.shape[2] == 4: # 透過 194 new_image = cv2.cvtColor(image, cv2.COLOR_BGRA2RGBA) 195 new_image = Image.fromarray(new_image) 196 return new_image 197#読み取り位置調整 198 199 200path = r"C:\Users\ookura\Desktop\test.jpg" 201 202QApp = QtWidgets.QApplication(sys.argv) 203app = Application() 204app.show() 205sys.exit(QApp.exec_()) 206 207 208
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/03 23:18