<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[עזרה| החלפת תוכן פונקציה בפייתון]]></title><description><![CDATA[<p dir="auto">אשמח לעזרה בתיכנות מבעלי ידע בפייתון.<br />
היות ואני עורך את ממשק התוכנה של תוכנת אנקי כך שיהיה נוח יותר לשימוש, אני מעוניין לצמצם את כמות התפריטים בתוכנה.<br />
לצורך כך, אני מנסה למחוק שני תפריטים הנקראים "כרטיסים" ו"רשומות" מסייר התוכנה באמצעות הפונקציה הבאה:</p>
<pre><code>def removeMenu(browser):
    browser.form.menu_Notes.deleteLater()
    browser.form.menu_Cards.deleteLater()
addHook("browser.setupMenus", removeMenu)
</code></pre>
<p dir="auto">הבעיה בזה היא שיש תפריט הקשר ש"שואב" את תוכן האפשרויות שבו מהתפריטים הנ"ל באמצעות הפונקציה</p>
<pre><code>    def _on_context_menu(self, _point: QPoint) -&gt; 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())

</code></pre>
<p dir="auto">ולכן הפעלה של הפונקציה הנ"ל גוררת את השגיאה הבאה:</p>
<pre><code>Caught exception:
Traceback (most recent call last):
  File "aqt\progress.py", line 54, in handler
  File "aqt\utils.py", line 965, in &lt;lambda&gt;
  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
</code></pre>
<p dir="auto">וכן את השגיאה:</p>
<pre><code>Caught exception:
Traceback (most recent call last):
  File "aqt\webview.py", line 541, in handler
  File "aqt\editor.py", line 528, in &lt;lambda&gt;
  File "aqt\utils.py", line 965, in &lt;lambda&gt;
  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
</code></pre>
<p dir="auto">כלומר, אין אפשרות למצוא את התפריטים הנ"ל.<br />
הקריאה לפונקציה שמעדכנת את תפריט ההקשר נמצאת בקובץ<br />
<a href="https://github.com/ankitects/anki/blob/4e4d12a62a261ea90afba88d761a2aad50baf12b/qt/aqt/browser/table/table.py#L348" target="_blank" rel="noopener noreferrer nofollow ugc">הזה</a> בשורה 348.<br />
הפונקציה עצמה נמצאת החל משורה 447.</p>
<p dir="auto">היות ואיני מתמצא בתכנות מאוד, רציתי לברר האם יש פקודה להחלפת תוכן הפונקציה כך שקריאה לפונקציה תבצע פעולה אחרת ממה שהיה במקור. (אני מעוניין לשנות את תפריט ההקשר כך שיציג דברים אחרים ולכן אני צריך "לשמור" עליו ולא להעלים אותו לגמרי).<br />
רק אוסיף שפתרון מסוג למחוק את השורה הנ"ל לא ישים כרגע מבחינתי היות ואני מפתח הכל כתוסף לתוכנה ולא עורך את הקוד שלה בעצמה ולכן אני מחפש עקיפה באמצעות תוסף שיבצע את הנ"ל.<br />
תודה מראש.</p>
]]></description><link>https://tchumim.com/topic/12574/עזרה-החלפת-תוכן-פונקציה-בפייתון</link><generator>RSS for Node</generator><lastBuildDate>Sun, 08 Mar 2026 00:49:10 GMT</lastBuildDate><atom:link href="https://tchumim.com/topic/12574.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 11 Jan 2022 21:52:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to עזרה| החלפת תוכן פונקציה בפייתון on Wed, 12 Jan 2022 22:50:16 GMT]]></title><description><![CDATA[<p dir="auto">נפתר בעזרת הפונקציה</p>
<pre><code>def removeMenu(browser):
      browser.form.menu_Notes.setTitle("")
      browser.form.menu_Cards.setTitle("")
 addHook("browser.setupMenus", removeMenu)
</code></pre>
<p dir="auto">שמוחקת את הסטרינג של כפתור התפריט וממילא הכפתור של התפריט נעלם אבל עדיין קיים.<br />
תודה לכל מי שחשב על פיתרון.</p>
]]></description><link>https://tchumim.com/post/134362</link><guid isPermaLink="true">https://tchumim.com/post/134362</guid><dc:creator><![CDATA[הפצת אנקי]]></dc:creator><pubDate>Wed, 12 Jan 2022 22:50:16 GMT</pubDate></item></channel></rss>