如何在 PyQt 中更改 QInputDialog 的字体大小?

Posted

技术标签:

【中文标题】如何在 PyQt 中更改 QInputDialog 的字体大小?【英文标题】:How to change the font size of a QInputDialog in PyQt? 【发布时间】:2016-09-07 19:14:30 【问题描述】:

简单消息框的案例

我已经知道如何在简单的 PyQt 对话框窗口中更改字体大小。举个例子:

    # Create a custom font
    # ---------------------
    font = QFont()
    font.setFamily("Arial")
    font.setPointSize(10)

    # Show simple message box
    # ------------------------
    msg = QMessageBox()
    msg.setIcon(QMessageBox.Question)
    msg.setText("Are you sure you want to delete this file?")
    msg.setWindowTitle("Sure?")
    msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
    msg.setFont(font)
    retval = msg.exec_()
    if retval == QMessageBox.Ok:
        print('OK')
    elif retval == QMessageBox.Cancel:
        print('CANCEL')

更改字体大小的关键是您实际上有一个消息框的“句柄”。变量msg 可用于根据您的需要调整消息框,然后再使用msg.exec_() 显示它。

简单输入对话框的案例

关于输入对话框的问题是这样的句柄不存在。举个例子:

    # Show simple input dialog
    # -------------------------
    filename, ok = QInputDialog.getText(None, 'Input Dialog', 'Enter the file name:')
    if(ok):
        print('Name of file = ' + filename)
    else:
        print('Cancelled')

输入对话框对象是即时创建的。我无法根据需要对其进行调整(例如,应用不同的字体)。

有没有办法在显示此QInputDialog 对象之前获取它的句柄?

编辑:

cmets 建议我使用 html sn-p 进行尝试:

    filename, ok = QInputDialog.getText(None, 'Input Dialog', '<html style="font-size:12pt;">Enter the file name:</html>')

结果如下:

如您所见,文本输入字段的字体仍然很小(未更改)。

【问题讨论】:

您可以使用 HTML 作为文本,并设置 style="font-size:10px;" 这是个好主意!我会试试看。不过,我将保持这个问题的开放性,因为其他调整(与字体大小无关)可能需要 QInputDialog 对象的句柄。 嗨@denvaar。您的方法有效,但仅适用于显示的信息文本。输入文本字段仍然具有默认字体。 你不能只做input_dialog = QInputDialog然后input_dialog.setFont(font)之类的事情吗? 不知道应该给QInputDialog的构造函数什么参数。你知道,有几种类型的输入对话框.. 【参考方案1】:

感谢@denvaar 和@ekhumoro 的cmets,我得到了解决方案。这里是:

    # Create a custom font
    # ---------------------
    font = QFont()
    font.setFamily("Arial")
    font.setPointSize(10)

    # Create and show the input dialog
    # ---------------------------------
    inputDialog = QInputDialog(None)
    inputDialog.setInputMode(QInputDialog.TextInput)
    inputDialog.setWindowTitle('Input')
    inputDialog.setLabelText('Enter the name for this new file:')
    inputDialog.setFont(font)
    ok = inputDialog.exec_()
    filename = inputDialog.textValue()
    if(ok):
        print('Name of file = ' + filename)
    else:
        print('Cancelled')

【讨论】:

以上是关于如何在 PyQt 中更改 QInputDialog 的字体大小?的主要内容,如果未能解决你的问题,请参考以下文章

PyQt4入门

如何在 QGraphicsPolygonItem 中添加 QInputDialog.getText 文本?

PyQt 输入对话框,意外类型

pyqt5 继承python类可以传递信号函数吗

在 python 中使用 pyqt5 旋转或调整轴刻度的大小

如何从 QInputDialog 中删除所有按钮