字体菜单 PyQt5 文本编辑器
Posted
技术标签:
【中文标题】字体菜单 PyQt5 文本编辑器【英文标题】:Fonts Menu PyQt5 Text Editor 【发布时间】:2017-09-27 23:37:38 【问题描述】:问题:
我正在尝试找到一种将字体样式添加到由我的 PyQt5 文本编辑器程序的用户编写的文本的方法。我不想手动将每种字体编码到某种菜单中,我想知道用户是否有一种内置方式可以像这样为他们的文本选择字体样式(记事本字体选择器):
我的代码目前如下所示:
class App(QMainWindow):
def __init__(self):
super().__init__()
self.title = 'Text Editor'
self.left = 10
self.top = 10
self.width = 1080
self.height = 920
self.widget = QWidget(self)
self.lbl = QLabel(self)
self.text = QTextEdit(self.widget)
self.widget.setLayout(QVBoxLayout())
self.widget.layout().addWidget(self.text)
self.setCentralWidget(self.widget)
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
toolBar = self.menuBar()
fileMenu = toolBar.addMenu('File')
editMenu = toolBar.addMenu('Edit')
toolsMenu = toolBar.addMenu('Tools')
helpMenu = toolBar.addMenu('Help')
fontButton = QAction('Configure Editor', self)
fontButton.setShortcut('Ctrl+E')
fontButton.triggered.connect(lambda: self.font_set)
toolsMenu.addAction(fontButton)
self.show()
def font_set(self):
print("Display Fonts")
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())
【问题讨论】:
【参考方案1】:Qt 有一个名为QFontDialog
的小部件,它非常适合这种情况,在下面的部分中我将展示它的使用示例:
def font_set(self):
font, ok = QFontDialog.getFont(self.text.font(), self)
if ok:
#QApplication.setFont(font)
self.text.setFont(font)
print("Display Fonts", font)
注意:您必须更改以下语句:
fontButton.triggered.connect(lambda: self.font_set)
到:
fontButton.triggered.connect(self.font_set)
截图:
【讨论】:
以上是关于字体菜单 PyQt5 文本编辑器的主要内容,如果未能解决你的问题,请参考以下文章