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

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

pyqt5 -שילוב Qcombobox בתפריט Qmenu

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

    אני מנסה ליצור תפריט משולב - אפשרויות רגילות ולצידן QFontCombobox. לצורך כך פעלתי לפי זה

    יש לי שתי בעיות עם התוצאה:
    א. התפריט Qmenu לא נסגר אוטומטית לאחר בחירת גופן.
    ב. לא הצלחתי למצוא דרך לקשר את בחירת הגופן לפונקציה אחרת (בדוגמא להלן זה print פשוט).

    from PyQt5.QtCore import QObject
    from PyQt5.QtGui import QIcon, QFont, QCursor
    from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QFontComboBox, QWidgetAction, QMenu, QPushButton
    class Window(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle("Pyside2 FontCombo Box")
            self.setGeometry(300,200,300,250)
            self.setFontBox()
            self.setIcon()
            self.show()
        def setIcon(self):
            appIcon = QIcon("icon.png")
            self.setWindowIcon(appIcon)
        def setFontBox(self):
            self.font_button = QPushButton(self)
            self.font_button.setFixedWidth(300)
            self.font_button.clicked.connect(lambda: self.setFontmenu())
            vbox = QVBoxLayout()
            vbox.addWidget(self.font_button)
            self.setLayout(vbox)
        def setFontmenu(self):
            font_menu = QMenu()
            font_submenu = QFontComboBox()
            font_submenu.setCurrentFont(QFont("Arial"))
            objectTest = QObject()
            widget = QWidgetAction(objectTest)
            widget.setDefaultWidget(font_submenu)
            font_menu.addAction(widget)
            font_menu.exec_(QCursor.pos())
            menu = font_menu
            menu.addSeparator()
            font_submenu.showPopup()
            font_submenu.setFocus()
            font_submenu.currentFontChanged.connect(self._changed)
        def _changed(self):
            font = self.currentFont().family()
            print(font)
            return
    myapp = QApplication(sys.argv)
    window = Window()
    myapp.exec_()
    sys.exit()
    

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

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

    @הפצת-אנקי הקוד הבא עובד:

    import sys
    from PyQt6.QtCore import QObject
    from PyQt6.QtGui import QIcon, QFont, QCursor
    from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout, QFontComboBox, QWidgetAction, QMenu, QPushButton
    class Window(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle("Pyside2 FontCombo Box")
            self.setGeometry(300,200,300,250)
            self.setFontBox()
            self.setIcon()
            self.show()
        def setIcon(self):
            appIcon = QIcon("icon.png")
            self.setWindowIcon(appIcon)
        def setFontBox(self):
            self.font_button = QPushButton(self)
            self.font_button.setFixedWidth(300)
            self.font_button.clicked.connect(self.setFontmenu)
            vbox = QVBoxLayout()
            vbox.addWidget(self.font_button)
            self.setLayout(vbox)
        def setFontmenu(self):
            self.font_menu = QMenu()
            self.font_submenu = QFontComboBox()
            self.font_submenu.setCurrentFont(QFont("Arial"))
            objectTest = QObject()
            widget = QWidgetAction(objectTest)
            widget.setDefaultWidget(self.font_submenu)
            self.font_menu.addAction(widget)
            self.font_submenu.currentFontChanged.connect(self._changed)
            self.font_menu.exec(QCursor.pos())
        def _changed(self):
            font = self.font_submenu.currentFont().family()
            self.font_menu.close()
            print(font)
            return
    myapp = QApplication(sys.argv)
    window = Window()
    myapp.exec()
    sys.exit()
    

    (שניתי ל-pyqt6 כי לא הצלחתי להתקין גירסה 5, הקוד פחות או יותר זהה עבור 5)
    הבעיה היתה שפונקציית QMenu.exec חוזרת רק אחרי שהתפריט נסגר

    📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

    תגובה 1 תגובה אחרונה
    5
  • dovidD dovid העביר נושא זה מ-תכנות ב-
  • ה הפצת אנקי התייחס לנושא זה ב

  • התחברות

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

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

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

  • התחברו או הירשמו כדי לחפש.