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

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

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

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

מתוזמן נעוץ נעול הועבר תכנות
2 פוסטים 2 כותבים 103 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ה מנותק
    ה מנותק
    הפצת אנקי
    כתב ב נערך לאחרונה על ידי הפצת אנקי
    #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
      • דף הבית
      • קטגוריות
      • פוסטים אחרונים
      • משתמשים
      • חיפוש
      • חוקי הפורום