鱼C论坛

 找回密码
 立即注册
查看: 4660|回复: 73

[已解决]QPlainTextEdit问题求教3~~

[复制链接]
发表于 2024-3-19 14:59:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
PySide6中,QPlainTextEdit控件:

1、请问QPlainTextEdit控件中的内容如何清屏 , 只是清屏,不删除内容。


1、请问QPlainTextEdit控件中某一行的字体颜色如何设置,可以多行设置多种颜色吗?

最佳答案
2024-3-19 15:24:48
凊风 发表于 2024-03-19 15:24
我已经有self.plainTextEdit控件,

并且self.plain ...


如果你已经有了self.plainTextEdit控件,并且通过重定向输出到其中,那么你可以在输出内容时使用QTextCursor来设置颜色。下面是一个示例函数,可以将notice以指定颜色显示在self.plainTextEdit中:

  1. def print_with_color(self, text, color):
  2.     cursor = self.plainTextEdit.textCursor()
  3.     format = QTextCharFormat()
  4.    
  5.     if color == "red":
  6.         format.setForeground(Qt.red)
  7.     elif color == "yellow":
  8.         format.setForeground(Qt.yellow)
  9.     elif color == "white":
  10.         format.setForeground(Qt.white)
  11.    
  12.     cursor.insertText(text, format)
复制代码


然后,你可以在需要打印notice的地方调用这个函数,并传入相应的颜色参数。例如:

  1. notice = "Hello World!"
  2. self.print_with_color(notice, "red")
复制代码


上述代码会将notice以红色显示在self.plainTextEdit中。如果想要显示为其他颜色,只需要将颜色参数改为"yellow"或"white"即可。

希望能帮助到你!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2024-3-19 15:01:59 | 显示全部楼层
FishC 发表于 2024-3-19 14:59
QPlainTextEdit控件是一个用于显示和编辑纯文本的多行文本框,下面是问题的解答:

1、要清空QPlainTextE ...

我要清屏的目的是QPlainTextEdit框中显示的内容太多了,需要消除掉一些。但不是删除。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-19 15:09:19 | 显示全部楼层
FishC 发表于 2024-3-19 14:59
QPlainTextEdit控件是一个用于显示和编辑纯文本的多行文本框,下面是问题的解答:

1、要清空QPlainTextE ...

QPlainTextEdit控件中某一行的字体颜色,可以通过Print语句打印时就设置好吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-19 15:15:40 | 显示全部楼层
FishC 发表于 2024-3-19 15:09
在QPlainTextEdit控件中,你可以通过重写`stdout`(标准输出)来实现在打印时就设置某一行的字体颜色。 ...

能不能在QPlainTextEdit中定义3个颜色函数(比如说红色、白色和黄色),

然后在QPlainTextEdit中打印输出时调用颜色函数来让各行显示不同的字体颜色。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-19 15:20:29 | 显示全部楼层
FishC 发表于 2024-3-19 15:15
当然可以!你可以在QPlainTextEdit中定义颜色函数,并在打印输出时调用这些函数来设置各行的字体颜色。 ...

如果只是这样定义:

def set_red_color(self, text):
        cursor = self.textCursor()
        format = QTextCharFormat()
        format.setForeground(Qt.red)
        cursor.insertText(text, format)

    def set_white_color(self, text):
        cursor = self.textCursor()
        format = QTextCharFormat()
        format.setForeground(Qt.white)
        cursor.insertText(text, format)

    def set_yellow_color(self, text):
        cursor = self.textCursor()
        format = QTextCharFormat()
        format.setForeground(Qt.yellow)
        cursor.insertText(text, format)

print('你好') 如何调用红色呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-19 15:24:37 | 显示全部楼层
FishC 发表于 2024-3-19 15:20
如果你只是定义了这几个函数,而没有在QPlainTextEdit类中调用它们,那么你可以按如下方式来调用红色函 ...

我已经有self.plainTextEdit控件,

并且self.plainTextEdit中的内容是通过

# 重定向输出到plainTextEdit
        self.redirect_output(self.plainTextEdit)
        print(notice[0])
我现在的需求是如何把notice[0]显示成红色或者黄色或者白色。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-19 15:32:39 | 显示全部楼层
FishC 发表于 2024-3-19 15:24
如果你已经有了self.plainTextEdit控件,并且通过重定向输出到其中,那么你可以在输出内容时使用QTextC ...

谢谢。这就是我多次被无辜误惩罚仍然钟情于FishC的原因了,哈哈~~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-19 16:07:18 | 显示全部楼层
FishC 发表于 2024-3-19 15:32
非常高兴能为你提供帮助!FishC是一个非常优秀和有趣的计算机教育网站,他们的教程和讲解确实能够让初 ...

请问如何用Pyside6将xls指定列从文本格式转换为数值格式。

比如说文本型身份证号转换为数值格式
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-19 16:13:10 | 显示全部楼层
FishC 发表于 2024-3-19 16:07
要将xls指定列从文本格式转换为数值格式,可以使用PySide6的Qt中的QVariant类型和QStandardItemModel来 ...

from PySide6.QtCore import Qt, QVariant
ImportError: cannot import name 'QVariant' from 'PySide6.QtCore'
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-19 16:14:01 | 显示全部楼层
FishC 发表于 2024-3-19 16:07
要将xls指定列从文本格式转换为数值格式,可以使用PySide6的Qt中的QVariant类型和QStandardItemModel来 ...

如果是xlsx格式呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-19 16:14:57 | 显示全部楼层
凊风 发表于 2024-3-19 16:14
如果是xlsx格式呢?

并且py和xlsx在同一文件夹下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-19 16:16:53 | 显示全部楼层
FishC 发表于 2024-3-19 16:15
如果Python脚本文件和xlsx文件在同一文件夹下,可以使用相对路径来指定文件路径。以下是修改后的代码示 ...

回复请注意python格式
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-19 16:19:48 | 显示全部楼层
FishC 发表于 2024-3-19 16:17
非常抱歉,我在回答中没有注意到代码格式的问题。以下是修正后的代码,使用了正确的Python格式:

能不能让程序接受用户指定的文件路径,然后打开该路径下的xls或者xlsx文件,

然后开信息BOX让用户指定哪一列,要由什么格式转换为什么格式也由用户指定。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-19 16:21:22 | 显示全部楼层
FishC 发表于 2024-3-19 16:20
当然可以!下面是一个示例代码,可以让用户指定文件路径、列和转换格式:

报错:
Traceback (most recent call last):
  File "D:\PycharmProjects\pythonProject\Xtt_xls\Txt_item_xlsx.py", line 49, in <module>
    model = create_model(xlsx_data)
            ^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\PycharmProjects\pythonProject\Xtt_xls\Txt_item_xlsx.py", line 20, in create_model
    item = QStandardItem()
           ^^^^^^^^^^^^^
NameError: name 'QStandardItem' is not defined. Did you mean: 'QStandardItemModel'?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-19 16:22:17 | 显示全部楼层
凊风 发表于 2024-3-19 16:21
报错:
Traceback (most recent call last):
  File "D:\PycharmProjects\pythonProject\Xtt_xls\Txt_i ...

再说了  如果是xls或者xlsx,应该打开工作簿的方式不同吧?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-19 16:23:38 | 显示全部楼层
FishC 发表于 2024-3-19 16:22
是的,打开xls和xlsx文件需要使用不同的方式。对于xls文件,可以使用`xlrd`库来读取,而对于xlsx文件, ...

能不能与28#楼合并起来写成一段代码啊?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-19 16:28:44 | 显示全部楼层
FishC 发表于 2024-3-19 16:23
当然可以!以下是将打开工作簿的方式与之前提供的代码合并的示例代码:

。。我现在的需求是:

1、让用户指定路径,再指定该路径下的工作簿(可能是xls或者xlsx文件,工作簿打开方式不同)

2、由用户指定列,并选择要从什么单元格格式转换成另外的什么单元格式。

3、自动转换,并把转换后的文件保存为原文件的副本。

4、询问用户是否还要继续 转换。  如果否,退出程序,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-19 16:31:18 | 显示全部楼层
FishC 发表于 2024-3-19 16:29
明白了你的需求。以下是根据你的要求修改后的代码示例:

要求路径和基础工作簿名都是让用户选择,不要让用户录入。

列号和要转换成的单元格格式,也是让用户下拉选择。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-19 16:37:59 | 显示全部楼层
FishC 发表于 2024-3-19 16:31
明白了你的要求,下面是根据你的需求修改后的代码示例:

直接让用户指定工作簿,不要有指定路径的选择了。

当用户指定工作簿后,自动读取所有的sheet名, 然后让用户下拉选择要转换的sheet;

然后自动读取用户指定sheet中的所有列名称,让用户下拉选择要转换的列名称;

然后提示用户把指定的列是什么格式,然后让用户下拉选择要转换成的单元格格式(排除掉该列本身的格式)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-19 16:40:37 | 显示全部楼层
FishC 发表于 2024-3-19 16:38
对不起,我理解错了你的需求。下面是经过修改的代码示例,以满足你的要求:from PySide6.QtWidgets imp ...

回复请注意python格式
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-22 10:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表