-
אני מנסה ליצור תפריט משולב - אפשרויות רגילות ולצידן 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() -
אני מנסה ליצור תפריט משולב - אפשרויות רגילות ולצידן 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()@הפצת-אנקי הקוד הבא עובד:
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חוזרת רק אחרי שהתפריט נסגר -
ה הפצת אנקי התייחס לנושא זה ב
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות