首页 > 解决方案 > 为什么从 cmd 运行 .py 与使用 anaconda 提示符运行时自动换行(QTableWidget、PYQT5)的绘制方式不同?

问题描述

我在 pyqt5 中编写了一个 GUI,您可以在其中输入两个路径(文件路径、目录路径……)。现在我的问题如下:

(1) 当我使用 Anaconda Prompt 窗口运行它并输入任何更长的路径时,它会按照我想要的方式自动换行(并且 afai 可以正确判断):

正确的自动换行

在这种情况下,使用setTextElideMode也可以。

(2) 当我使用 windows 命令提示符 ( ) 运行它时,它开始通过插入普通省略号 " " 在 " "C:\[...]\Desktop>C:\[...]\python\3.8.1.0.0\python-3.8.1.amd64\python.exe C:\[...]\Desktop\cmd_problems.py之后直接换行- 我必须(手动)拉伸列,直到整个路径可见以使其显示比那更多的:C:...

不正确的自动换行

usingsetTextElideMode什么都不做。

有谁知道从 windows cmd 行运行代码时如何获得第一个行为?(我需要这个,因为我使用批处理脚本来启动类似于制作 .exe 文件的程序。)

这是我的代码:

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget
from PyQt5.QtWidgets import QTableWidget, QVBoxLayout

class MyWindow(QMainWindow):
    
    def __init__(self, parent=None):

        super().__init__(parent)
        
        self.setWindowTitle("Very Important Window")
        cen = QWidget()
        self.layout = QVBoxLayout()
        self.setCentralWidget(cen)
        cen.setLayout(self.layout)
        
        self.tbl = QTableWidget()
        self.tbl.setRowCount(1)
        self.tbl.setColumnCount(2)
        self.tbl.setTextElideMode(Qt.ElideRight)
        col_names = ["FROM", "TO"]
        self.tbl.setHorizontalHeaderLabels(col_names)
        self.layout.addWidget(self.tbl)
        
def main():
    app = QApplication([])
    win = MyWindow()
    win.show()
    sys.exit(app.exec_())
        
if __name__ == "__main__":
    main()

标签: pythoncmdpyqt5word-wrapqtablewidget

解决方案


推荐阅读