דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. עזרה| החלפת תוכן פונקציה בפייתון

עזרה| החלפת תוכן פונקציה בפייתון

מתוזמן נעוץ נעול הועבר תכנות
2 פוסטים 1 כותבים 118 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ה מנותק
    ה מנותק
    הפצת אנקי
    כתב ב נערך לאחרונה על ידי הפצת אנקי
    #1

    אשמח לעזרה בתיכנות מבעלי ידע בפייתון.
    היות ואני עורך את ממשק התוכנה של תוכנת אנקי כך שיהיה נוח יותר לשימוש, אני מעוניין לצמצם את כמות התפריטים בתוכנה.
    לצורך כך, אני מנסה למחוק שני תפריטים הנקראים "כרטיסים" ו"רשומות" מסייר התוכנה באמצעות הפונקציה הבאה:

    def removeMenu(browser):
        browser.form.menu_Notes.deleteLater()
        browser.form.menu_Cards.deleteLater()
    addHook("browser.setupMenus", removeMenu)
    

    הבעיה בזה היא שיש תפריט הקשר ש"שואב" את תוכן האפשרויות שבו מהתפריטים הנ"ל באמצעות הפונקציה

        def _on_context_menu(self, _point: QPoint) -> None:
            menu = QMenu()
            if self.is_notes_mode():
                main = self.browser.form.menu_Notes
                other = self.browser.form.menu_Cards
                other_name = tr.qt_accel_cards()
            else:
                main = self.browser.form.menu_Cards
                other = self.browser.form.menu_Notes
                other_name = tr.qt_accel_notes()
            for action in main.actions():
                menu.addAction(action)
            menu.addSeparator()
            sub_menu = menu.addMenu(other_name)
            for action in other.actions():
                sub_menu.addAction(action)
            gui_hooks.browser_will_show_context_menu(self.browser, menu)
            qtMenuShortcutWorkaround(menu)
            menu.exec(QCursor.pos())
    
    

    ולכן הפעלה של הפונקציה הנ"ל גוררת את השגיאה הבאה:

    Caught exception:
    Traceback (most recent call last):
      File "aqt\progress.py", line 54, in handler
      File "aqt\utils.py", line 965, in <lambda>
      File "aqt\browser\browser.py", line 442, in onRowChanged
      File "aqt\browser\browser.py", line 446, in _update_context_actions
      File "aqt\browser\browser.py", line 477, in _update_enabled_actions
    RuntimeError: wrapped C/C++ object of type QMenu has been deleted
    

    וכן את השגיאה:

    Caught exception:
    Traceback (most recent call last):
      File "aqt\webview.py", line 541, in handler
      File "aqt\editor.py", line 528, in <lambda>
      File "aqt\utils.py", line 965, in <lambda>
      File "aqt\browser\browser.py", line 442, in onRowChanged
      File "aqt\browser\browser.py", line 446, in _update_context_actions
      File "aqt\browser\browser.py", line 477, in _update_enabled_actions
    RuntimeError: wrapped C/C++ object of type QMenu has been deleted
    
    Caught exception:
    Traceback (most recent call last):
      File "aqt\browser\table\table.py", line 328, in _on_context_menu
    RuntimeError: wrapped C/C++ object of type QMenu has been deleted
    

    כלומר, אין אפשרות למצוא את התפריטים הנ"ל.
    הקריאה לפונקציה שמעדכנת את תפריט ההקשר נמצאת בקובץ
    הזה בשורה 348.
    הפונקציה עצמה נמצאת החל משורה 447.

    היות ואיני מתמצא בתכנות מאוד, רציתי לברר האם יש פקודה להחלפת תוכן הפונקציה כך שקריאה לפונקציה תבצע פעולה אחרת ממה שהיה במקור. (אני מעוניין לשנות את תפריט ההקשר כך שיציג דברים אחרים ולכן אני צריך "לשמור" עליו ולא להעלים אותו לגמרי).
    רק אוסיף שפתרון מסוג למחוק את השורה הנ"ל לא ישים כרגע מבחינתי היות ואני מפתח הכל כתוסף לתוכנה ולא עורך את הקוד שלה בעצמה ולכן אני מחפש עקיפה באמצעות תוסף שיבצע את הנ"ל.
    תודה מראש.

    ניתן לקבל את התוכנה לזכירת הלימוד בכתובת מייל 3422973@gmail.com
    הודעה זמנית: לעת עתה אנו מנסים לארגן מסע פרסום לתוכנה כדי שכלל הלומדים יוכלו לחזור בקלות על לימודם. תרומות בקישור: https://nedar.im/lGvN

    תגובה 1 תגובה אחרונה
    1
    • ה מנותק
      ה מנותק
      הפצת אנקי
      כתב ב נערך לאחרונה על ידי
      #2

      נפתר בעזרת הפונקציה

      def removeMenu(browser):
            browser.form.menu_Notes.setTitle("")
            browser.form.menu_Cards.setTitle("")
       addHook("browser.setupMenus", removeMenu)
      

      שמוחקת את הסטרינג של כפתור התפריט וממילא הכפתור של התפריט נעלם אבל עדיין קיים.
      תודה לכל מי שחשב על פיתרון.

      ניתן לקבל את התוכנה לזכירת הלימוד בכתובת מייל 3422973@gmail.com
      הודעה זמנית: לעת עתה אנו מנסים לארגן מסע פרסום לתוכנה כדי שכלל הלומדים יוכלו לחזור בקלות על לימודם. תרומות בקישור: https://nedar.im/lGvN

      תגובה 1 תגובה אחרונה
      2
      • dovidD dovid העביר נושא זה מ-תכנות ב-

      בא תתחבר לדף היומי!
      • התחברות

      • אין לך חשבון עדיין? הרשמה

      • התחברו או הירשמו כדי לחפש.
      • פוסט ראשון
        פוסט אחרון
      0
      • דף הבית
      • קטגוריות
      • פוסטים אחרונים
      • משתמשים
      • חיפוש
      • חוקי הפורום