import os from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QListWidget, QVBoxLayout, QHBoxLayout from PyQt5.QtGui import QIcon, QFont import PyPDF2 import win32com.client AO = "" def VSPX(): global AO if AO.endswith('.docx') or AO.endswith('.doc'): # פתיחת מסמך Word והדפסה word = win32com.client.Dispatch("Word.Application") doc = word.Documents.Open(AO) doc.PrintOut() word.Quit() QMessageBox.information(None, "הודעה", "המסמך נשלח להדפסה") # ... (שאר הקוד) elif AO.endswith('.pdf'): reader = PyPDF2.PdfReader(open(AO, 'rb')) output_path, _ = QFileDialog.getSaveFileName(None, "Save PDF", "", "PDF Files (*.pdf)") if output_path: with open(output_path, "wb") as output: writer = PyPDF2.PdfWriter() for page_num in range(len(reader.pages)): page = reader.pages[page_num] writer.add_page(page) writer.write(output) נתיב_תוכנית = os.path.dirname(os.path.abspath(__file__)) # מקבל את הנתיב של התוכנית הנוכחית נתיב_קובץ_VDPX = os.path.join(נתיב_תוכנית, "VDPX.BAT") # בונה את הנתיב המלא לקובץ subprocess.call(נתיב_קובץ_VDPX) # מפעיל את הקובץ # צייר את התוכן שברצונך להדפיס # ... painter.end() QMessageBox.information(None, "הודעה", "המסמך נשלח להדפסה") # שמירת החלון פתוח באמצעות QEventLoop loop = QEventLoop() QTimer.singleShot(1000, loop.quit) # סגור את הלולאה לאחר 1 שניה loop.exec_() else: QMessageBox.warning(None, "שגיאה", "סוג קובץ לא נתמך") class App(QWidget): def __init__(self): super().__init__() self.title = 'מדפיס מסמכים' self.left = 100 self.top = 100 self.width = 800 self.height = 600 self.initUI() def initUI(self): self.setWindowTitle(self.title) self.setGeometry(self.left, self.top, self.width, self.height) # כיתוב הסבר label = QLabel("להדפסת מסמך לחץ לחיצה כפולה על הכפתור השמאלי בעכבר או על ENTER") font = QFont() font.setPointSize(12) font.setBold(True) label.setFont(font) # רשימת קבצים self.listWidget = QListWidget(self) self.listWidget.itemDoubleClicked.connect(self.item_selected) self.listWidget.setFont(font) # סידור האלמנטים בממשק hbox = QHBoxLayout() hbox.addWidget(self.listWidget) vbox = QVBoxLayout() vbox.addWidget(label) vbox.addLayout(hbox) self.setLayout(vbox) # סריקת כונן D והוספת קבצים לרשימה (מימין לשמאל) for root, dirs, files in os.walk('F:\\'): for file in reversed(files): # הפוך את הסדר להצגה מימין לשמאל if file.endswith('.docx') or file.endswith('.pdf'): self.listWidget.addItem(os.path.join(root, file)) self.show() def item_selected(self): global AO AO = self.listWidget.currentItem().text() VSPX() if __name__ == '__main__': app = QApplication([]) ex = App() ex.show() # הוספת ex.show() כדי להציג את החלון app.exec_()