PyQt setText无法在MacO中正确呈现文本

时间:2019-01-22 17:03:23

标签: python python-3.x pyqt pyqt5

我正在使用PyQt5(pythyon 3.7,MacOs X)创建一个应用程序 当我使用说明修改文本框中的文本时

self.line_main.setText(final_text)

来自功能(已连接到按钮) 新文本无法在文本框中正确呈现(请参见屏幕截图),新旧文本都以奇怪的方式重叠。 过度简化的代码来说明这个问题:

import sys
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QMainWindow, QWidget, QLabel, QLineEdit
from PyQt5.QtWidgets import QPushButton
from PyQt5.QtCore import QSize

class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)

        self.setMinimumSize(QSize(200, 200))
        self.setWindowTitle("PyQt test")
        self.line_main = QLineEdit(self)
        self.line_main.move(20,20)

        bt_upperCase = QPushButton('Upper Case', self)
        bt_upperCase.move(20, 60)
        bt_upperCase.clicked.connect(self.click_upCase)

    def click_upCase(self):
        final_text=self.line_main.text().upper()
        self.line_main.setText(final_text)


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    mainWin = MainWindow()
    mainWin.show()
    sys.exit( app.exec_() )

迷你应用的屏幕截图,其中“ re”作为输入,“ re”作为输出

标签有时可能会发生同样的事情,尽管有时仅可见旧文本,我需要用鼠标选择文本或调整主窗口的大小以“刷新”文本框并查看新值。 / p>

如果我仅在MacO中(仅在High Sierra和Mojave中测试并获得相同的结果)在PC中运行代码,就不会发生此问题

一些奇怪的行为是:

  • 如果将文本框放置在主窗口中的(0,0)位置(这不太实用),则setText可以正常运行。也可以在该框的其他一些位置,但前提是该框必须非常靠近左上角并且附近没有其他元素。
  • 如果我在主窗口的初始化时修改了文本框的值,那么它在所有情况下都可以正确呈现。当您尝试通过函数(例如,单击按钮后)进行操作时,会出现问题,例如附加代码。 如果我仅在MacO中(在High Sierra和Mojave中测试并得到相同的结果)在PC中运行代码,则不会发生此问题。
  • 如果将文本框定位在主窗口中的(0,0)位置(这不是很实际),则setText可以正常运行。也可以在该框的其他一些位置,但前提是该框必须非常靠近左上角并且附近没有其他元素。

有人猜测为什么会发生这种情况,如何解决?

更新。 如果我在conda安装(PyQt版本5.9.2)中使用python 3.6运行代码,则问题会消失。仍然很想知道是什么原因引起的。

0 个答案:

没有答案