pyqtで画像のようなテーブルがあるアプリを作成中です。
テーブル上の行がすべて空白だった場合、最終行とみなしてその行にデータを入力していく
プログラムを組みたいのですがうまくいきません。
1行分の入力されたデータ1つずつを全て連結して内容が空白であれば最終行とみなそうとすると、
空白セルを連結しようとした時にエラーメッセージも残さずアプリケーションが終了してしまいます。
上記の組み方がスマートか不明なのですが、空白行の判定の仕方、または別のスマートな方法を
ご存知の方がいらっしゃったらご教示いただけませんでしょうか。
よろしくお願いします。
#追記
組み上げ中のコードが入力数制限で記載できなかった為、
似たようなものを別途作成しました。
self.tableWidget.item(j, i).text() を空白のセル部分で取得しようとすると
アプリケーションが終了してしまいます。
引き続きご教示いただけますと幸いです。
python
1import sys 2from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget, QAction, QTableWidget,QTableWidgetItem,QVBoxLayout 3from PyQt5.QtGui import QIcon 4from PyQt5.QtCore import pyqtSlot 5 6class App(QWidget): 7 8 def __init__(self): 9 super().__init__() 10 self.title = "PyQt5 table - pythonspot.com" 11 self.left = 0 12 self.top = 0 13 self.width = 300 14 self.height = 200 15 self.initUI() 16 17 def initUI(self): 18 self.setWindowTitle(self.title) 19 self.setGeometry(self.left, self.top, self.width, self.height) 20 21 self.createTable() 22 23 # Add box layout, add table to box layout and add box layout to widget 24 self.layout = QVBoxLayout() 25 self.layout.addWidget(self.tableWidget) 26 self.setLayout(self.layout) 27 28 # Show widget 29 self.show() 30 31 def createTable(self): 32 # Create table 33 self.tableWidget = QTableWidget() 34 self.tableWidget.setRowCount(4) 35 self.tableWidget.setColumnCount(4) 36 self.tableWidget.setItem(0,0, QTableWidgetItem("Cell (1,1)")) 37 self.tableWidget.setItem(0,1, QTableWidgetItem("Cell (1,2)")) 38 self.tableWidget.setItem(1,0, QTableWidgetItem("Cell (2,1)")) 39 #self.tableWidget.setItem(1,1, QTableWidgetItem("Cell (2,2)")) 40 #self.tableWidget.setItem(2,0, QTableWidgetItem("Cell (3,1)")) 41 self.tableWidget.setItem(2,1, QTableWidgetItem("Cell (3,2)")) 42 self.tableWidget.setItem(3,0, QTableWidgetItem("Cell (4,1)")) 43 self.tableWidget.setItem(3,1, QTableWidgetItem("Cell (4,2)")) 44 self.tableWidget.move(0,0) 45 46 # table selection change 47 self.tableWidget.doubleClicked.connect(self.on_click) 48 49 50 @pyqtSlot() 51 def on_click(self): 52 print("\n") 53 for currentQTableWidgetItem in self.tableWidget.selectedItems(): 54 fragA = True 55 fragB = False 56 word ="" 57 i = 0 58 j = 0 59 while fragA: 60 for s in range(4): 61 if self.tableWidget.item(j, i).text() != "": 62 fragB = True 63 else:break 64 65 i += 1 66 if fragB == True: 67 break 68 j=j+1 69 i = 0 70 71 # 72 print(self.tableWidget.item(1,1).text()) 73 74if __name__ == "__main__": 75 app = QApplication(sys.argv) 76 ex = App() 77 sys.exit(app.exec_())
回答1件
あなたの回答
tips
プレビュー