I don't understand this python Qt6 program, why is the function "run" executed? In the codes segment given below and the whole program, I don't see the run() been called. Here is the segment of codes where the function is declared and the class that contains it which has been executed. The main window is class window2 and the function "run" is declared in it. ###cut off class PDFWorker(QThread): progress_signal = pyqtSignal(int) completed_signal = pyqtSignal() def __init__(self, files_list, output_path2, start_page, end_page, spinBox_2_value): super().__init__() self.files_list = files_list self.output_path2 = output_path2 self.start_page = start_page self.end_page = end_page self.spinBox_2_value = spinBox_2_value def run(self): print("run4") total_pages = 0 # First, calculate the total number of pages across all PDFs for progress tracking for file in self.files_list: doc = fitz.open(file) total_pages += (len(doc) - self.spinBox_2_value) - self.start_page doc.close() pages_processed = 0 # Process each file individually for i, file in enumerate(self.files_list): doc = fitz.open(file) num_pages_in_doc = len(doc) # Get total pages for this document # Calculate the end_page for the current document, ensuring it doesn't exceed the total pages end_page = min(num_pages_in_doc - self.spinBox_2_value, self.end_page) text = "" print(f"Processing {file} from page {self.start_page} to {end_page}") for page_num in range(self.start_page, end_page): page = doc.load_page(page_num) pix = page.get_pixmap() image = Image.frombytes("RGB", [pix.width, pix.height], pix.samples) text += "\n" + pytesseract.image_to_string(image) pages_processed += 1 # Emit progress signal progress = int((pages_processed / total_pages) * 100) self.progress_signal.emit(progress) doc.close() # Ensure each output file has a unique name output_file = Path(self.output_path2, f"{Path(file).stem}_{i+1}.docx") self.create_docx(text, output_file) print(f"Created {output_file}") print(text) # Emit completed signal self.completed_signal.emit() def create_docx(self, text, file_path): doc = Document() paragraphs = text.split('\n') for paragraph in paragraphs: doc.add_paragraph(paragraph) doc.save(file_path) class window2(QMainWindow): def __init__(self): super(window2, self).__init__() loadUi(os.path.join(base_path, '2.ui'), self) self.action.triggered.connect(self.page1) self.pushButton_start.clicked.connect(self.start) self.pushButton.clicked.connect(self.select_input_path) self.pushButton_2.clicked.connect(self.select_output_folder) def start(self): print("run1") global path2, output_path2 if path2 == "": QMessageBox.critical(self, '', 'E:0014') return if output_path2 == "": QMessageBox.critical(self, '', 'E:0015') return start_page = self.spinBox.value() spinBox_2_value = self.spinBox_2.value() if self.radioButton_single.isChecked(): files_list = [path2] # Single file elif self.radioButton_all.isChecked(): files_list = find_files(path2, ".pdf") # Multiple files # Open the first file to calculate the total number of pages doc = fitz.open(files_list[0]) end_page = len(doc) # Set end_page to the total number of pages in the PDF doc.close() # Create a PDF worker thread and start processing print("run2") self.pdf_worker = PDFWorker(files_list, output_path2, start_page, end_page, spinBox_2_value) self.pdf_worker.progress_signal.connect(self.update_progress_bar) self.pdf_worker.completed_signal.connect(self.pdf_processing_completed) self.pdf_worker.start() ###cut off Continue reading...