def table_reach_all(self,MainWindow): # 遍历获取全部数据 item_list = [] model = MainWindow.main_ui.tableView.model() for row in range(model.rowCount()): for column in range(model.columnCount()): item = model.item(row, column) if item: # print(f'Row {row}, Column {column}: {item.text()}') item_list.append(item.text()) return item_list
时间: 2024-02-14 16:27:44 浏览: 66
根据给出的`table_reach_all`函数的代码,可以确定返回的是一个一维列表`item_list`,其中包含了表格中所有非空单元格的文本内容。
在这种情况下,`Itemlist`就是一个包含了所有非空单元格文本的列表。循环`for Item in enumerate(Itemlist):`中的`Item`表示`Itemlist`中的一个元素,即表格中的一个非空单元格的文本内容。
如果你想获取每个元素在表格中的行和列索引,可以将循环改为`for index, Item in enumerate(Itemlist):`,然后使用`index`来表示当前元素在`Itemlist`中的索引位置,使用`row`和`column`来表示当前元素在表格中的行和列索引。
相关问题
self.main_ui.pushButton_2.clicked.connect(self.thing1) 没反应是为什么 class Worker(QtCore.QThread): sinOut = pyqtSignal(str) def __init__(self, parent=None): super(Worker, self).__init__(parent) # 设置工作状态与初始num数值 self.working = True self.num = 0 #def __del__(self): # 线程状态改变与线程终止 #self.working = False #self.wait() def stop(self): #线程状态改变与线程终止 self.working = False self.wait() def run(self): self.working = True while self.working == True: #file_str = 'File index{0}'.format(self.num) self.num += 1 # 发射信号 #self.sinOut.emit(file_str) self.sinOut.emit('1') # 线程休眠2秒 self.msleep(5) class parentWindow(QMainWindow): def __init__(self): QMainWindow.__init__(self) self.main_ui = JQ.Ui_MainWindow() self.main_ui.setupUi(self) self.thread1 = Worker() self.main_ui.pushButton_2.clicked.connect(self.thing1) self.thread1.sinOut.connect(self.printt) def thing1(self): #self.main_ui.pushButton.setEnabled(False) print('9999999999') self.thread1.start() print('123') #self.sleep(2) def printt(self): print('7777') def ok(): print('ok') # def hourstest(): # thread1 = Worker() # thread1.start() # com = JQ.Ui_MainWindow().comboBox_2.currentText() # ser = serial.Serial('com3', 1200, timeout=1) # data = bytes.fromhex( # '68 01 00 20 00 00 00 00 00 34 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 33 F4 16 ') # ser.write(data) if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) widget = QtWidgets.QMainWindow() widget = parentWindow() ui = JQ.Ui_MainWindow() # 这是原py中的类,因人而异哦 ui.setupUi(widget) ui.discoverSerial() #串口发现 #ui.pushButton_2.clicked.connect(widget.thing1) widget.show() sys.exit(app.exec_())
首先,你的连接语句应该是正确的。但是,你的槽函数`thing1`中启动了一个线程并且没有等待该线程完成。因此,当你再次点击`pushButton_2`时,会创建一个新的线程,导致出现问题。
你需要在`thing1`函数中添加`self.thread1.wait()`语句来等待线程完成。这样,当你再次点击`pushButton_2`时,它会等待线程完成后再启动一个新的线程。
另外,你在`ok`函数中定义了一个serial对象,但是没有使用它。如果你想使用该对象,你需要在该函数中添加相关代码。
以下是修改后的代码:
```
class parentWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.main_ui = JQ.Ui_MainWindow()
self.main_ui.setupUi(self)
self.thread1 = Worker()
self.thread1.sinOut.connect(self.printt)
self.main_ui.pushButton_2.clicked.connect(self.thing1)
def thing1(self):
print('9999999999')
self.thread1.start()
self.thread1.wait() # 等待线程完成
print('123')
def printt(self):
print('7777')
def ok():
print('ok')
com = JQ.Ui_MainWindow().comboBox_2.currentText()
ser = serial.Serial('com3', 1200, timeout=1)
data = bytes.fromhex('68 01 00 20 00 00 00 00 00 34 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 33 F4 16 ')
ser.write(data)
```
class Emotion_MainWindow(Ui_MainWindow): def __init__(self, MainWindow): self.path = getcwd() self.timer_camera = QtCore.QTimer() # 定时器 self.timer_video = QtCore.QTimer() # 定时器 self.setupUi(MainWindow) self.retranslateUi(MainWindow) self.slot_init() # 槽函数设置 # 设置界面动画 gif = QMovie(':/newPrefix/icons/scan.gif') self.label_face.setMovie(gif) gif.start() self.cap = cv2.VideoCapture() # 屏幕画面对象 self.cap2 = cv2.VideoCapture() self.CAM_NUM = 0 # 摄像头标号 self.model_path = None # 模型路径 # self.__flag_work = 0
这是一个Python类,它继承自Ui_MainWindow。它有一个构造函数__init__,它的参数是MainWindow。它的成员变量包括self.path和self.timer_camera。其中,self.path是当前路径,self.timer_camera是一个计时器。
阅读全文