python中font.set_text_python-(PyQt)为什么我不能更改QTextEdit小部件的字体?

每当我尝试使用最后一个代码块中的函数更改QTextEdit小部件的字体时,该程序都会立即因代码1而崩溃.这可能是什么原因?

self.font = QFont("Arial")

self.text_edit = QTextEdit()

self.setCentralWidget(self.text_edit)

self.text_edit.setCurrentFont(self.font)

def aFont(self):

previous_font = self.font

self.font = QFontDialog().getFont(previous_font)

if self.font != previous_font:

self.text_edit.selectAll()

self.text_edit.setCurrentFont(self.font)

解决方法:

您的问题缺少很多重要信息,例如所使用的PyQt的平台和版本以及完整的追溯.但是,假设您使用的是PyQt-5.5,则有可能对问题的可能原因做出合理的猜测.

在以前的PyQt版本中,某些未处理的异常只会导致将追溯打印到stderr,而不会中断应用程序的执行.但这不是普通的python脚本的行为.因此,PyQt-5.5中的行为已得到纠正,因为应用程序现在会在遇到未处理的异常时立即中止(请参阅PyQt5文档中的Incompatibilities with Earlier Versions).

我不知道您在运行应用程序时会看到什么(我假设您在Windows上),但是在Linux上我会看到以下信息:

Traceback (most recent call last):

File "test.py", line 21, in aFont

self.text_edit.setCurrentFont(self.font)

TypeError: QTextEdit.setCurrentFont(QFont): argument 1 has unexpected type 'tuple'

Aborted (core dumped)

因此,应用程序不会“崩溃”,它会在遇到未处理的异常时中止运行.具体错误是由以下行引起的:

self.font = QFontDialog().getFont(previous_font)

因为getFont返回一个元组字体,所以ok(其中ok是一个布尔值,指示用户是否单击Ok或Cancel).因此,您只需要更改以下行即可:

self.font, ok = QFontDialog().getFont(previous_font)

标签:pyqt5,python-3-x,pyqt,python

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值