鱼C论坛

 找回密码
 立即注册
查看: 1016|回复: 49

字体颜色设置求教~

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

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

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

x
现有如下函数:   
def print_with_color(self, text, color):
        cursor = self.plainTextEdit.textCursor()
        format = QTextCharFormat()
        if color == "red":
            format.setForeground(Qt.red)
        
        cursor.insertText(text, format)

请问如果有需要要打印出来下面的内容,又要能设置颜色,请问用Pyside6要如何实现?

self.print_with_color('您本次报表为:', self.File_Path)

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-3-24 12:12:37 | 显示全部楼层
您可以使用以下代码来实现使用PySide6设置打印文字的颜色:
from PySide6.QtGui import QTextCharFormat, QColor
from PySide6.QtCore import Qt

def print_with_color(self, text, color):
    cursor = self.plainTextEdit.textCursor()
    format = QTextCharFormat()

    # 设置颜色
    if color == "red":
        format.setForeground(Qt.red)
    elif color == "blue":
        format.setForeground(Qt.blue)
    elif color == "green":
        format.setForeground(Qt.green)
    # 其他颜色设置...

    # 插入文本
    cursor.insertText(text, format)

self.print_with_color('您本次报表为:', "red")

在这个例子中,我们通过传递颜色参数来设置文字的颜色。根据传递的颜色参数,我们使用`QTextCharFormat`类和`setForeground()`方法来设置文字的前景色。其中`Qt.red`、`Qt.blue`和`Qt.green`是Qt提供的一些预定义颜色。

您可以将需要的颜色作为参数传递给`self.print_with_color()`函数,如上述示例中的`"red"`,这样就可以在指定的文本后面打印红色的文字了。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-24 12:14:42 | 显示全部楼层
FishC 发表于 2024-3-24 12:12
您可以使用以下代码来实现使用PySide6设置打印文字的颜色:

你这函数只能设置要打印的引号中的字体颜色,我现在的需求是引号后的变量名也要设置颜色(甚至是与

引号中内容不同的颜色),要如何实现呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-24 12:15:00 | 显示全部楼层
凊风 发表于 2024-03-24 12:14
你这函数只能设置要打印的引号中的字体颜色,我现在的 ...


要实现引号后的变量名也能设置颜色,可以将传入的`text`参数拆分为两部分:引号中的内容和变量名。然后分别设置它们的颜色。

以下是一个示例代码:
from PySide6.QtGui import QTextCharFormat, QColor
from PySide6.QtCore import Qt

def print_with_color(self, text, color):
    cursor = self.plainTextEdit.textCursor()
    format1 = QTextCharFormat()  # 引号内文字的格式
    format2 = QTextCharFormat()  # 变量名的格式
    
    # 设置颜色
    if color == "red":
        format1.setForeground(Qt.red)
        format2.setForeground(Qt.red)
    elif color == "blue":
        format1.setForeground(Qt.blue)
        format2.setForeground(Qt.blue)
    elif color == "green":
        format1.setForeground(Qt.green)
        format2.setForeground(Qt.green)
    # 其他颜色设置...
    
    # 拆分引号中的内容和变量名
    start_index = text.find("'")
    end_index = text.rfind("'")
    content = text[start_index + 1: end_index]
    variable_name = text[end_index + 1:]
    
    # 插入引号中的内容
    cursor.insertText(content, format1)
    # 插入变量名
    cursor.insertText(variable_name, format2)

# 调用函数
self.print_with_color("您本次报表为:'文件路径'", "red")

在这个代码中,我们通过`find()`和`rfind()`函数找到引号的起始索引和结束索引,然后使用切片操作获取引号内的内容和变量名。接着,我们分别使用两个`QTextCharFormat`对象`format1`和`format2`来设置引号内文字和变量名的颜色。最后,通过`insertText()`方法将引号内的内容和变量名插入到文本中,并分别应用对应的格式。

您可以根据需要自定义颜色和传入的参数,实现不同的颜色设置效果。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-24 12:18:36 | 显示全部楼层
FishC 发表于 2024-3-24 12:15
要实现引号后的变量名也能设置颜色,可以将传入的`text`参数拆分为两部分:引号中的内容和变量名。然后 ...

能不能用PySide6设置两个颜色参数,比如说format1.setForeground(Qt.red)
        format2.setForeground(Qt.blue)呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-24 12:18:49 | 显示全部楼层
凊风 发表于 2024-03-24 12:18
能不能用PySide6设置两个颜色参数,比如说format1.set ...


在PySide6中,可以通过自定义参数来传递两个颜色,并将其应用于引号内的内容和变量名。以下是一个示例代码:from PySide6.QtGui import QTextCharFormat, QColorfrom PySide6.QtCore import Qtdef print_with_color(self, text, color1, color2):    cursor = self.plainTextEdit.textCursor()    format1 = QTextCharFormat()  # 引号内文字的格式    format2 = QTextCharFormat()  # 变量名的格式        # 设置颜色    format1.setForeground(color1)    format2.setForeground(color2)    # 插入引号中的内容    cursor.insertText(text, format1)    # 插入变量名    cursor.insertText(text, format2)# 调用函数self.print_with_color("'您本次报表为:'文件路径'", Qt.red, Qt.blue)在这个代码中,我们将颜色设置为`color1`和`color2`参数。然后,我们分别使用两个`QTextCharFormat`对象`format1`和`format2`来设置引号内文字和变量名的颜色。最后,通过`insertText()`方法将整个文本插入到文本编辑器中,并应用相应的格式。

您可以根据需要传递不同的颜色参数,实现不同的颜色设置效果。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-24 12:19:20 | 显示全部楼层
FishC 发表于 2024-3-24 12:18
在PySide6中,可以通过自定义参数来传递两个颜色,并将其应用于引号内的内容和变量名。以下是一个示例 ...

回复请注意python格式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-24 12:19:32 | 显示全部楼层
凊风 发表于 2024-03-24 12:19
回复请注意python格式


非常抱歉,以下是经过修改以符合Python格式的代码示例:
from PySide6.QtGui import QTextCharFormat, QColor
from PySide6.QtCore import Qt

def print_with_color(self, text, color1, color2):
    cursor = self.plainTextEdit.textCursor()
    format1 = QTextCharFormat()  # 引号内文字的格式
    format2 = QTextCharFormat()  # 变量名的格式
    
    # 设置颜色
    format1.setForeground(color1)
    format2.setForeground(color2)
    
    # 插入引号中的内容
    cursor.insertText(text, format1)
    
    # 插入变量名
    cursor.insertText(text, format2)

# 调用函数
self.print_with_color("'您本次报表为:'文件路径'", Qt.red, Qt.blue)

再次诚挚道歉,希望这次的回答符合您的要求。如还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-24 12:26:12 | 显示全部楼层
FishC 发表于 2024-3-24 12:19
非常抱歉,以下是经过修改以符合Python格式的代码示例:

这里不需要对Text进行拆分吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-24 12:26:23 | 显示全部楼层
凊风 发表于 2024-03-24 12:26
这里不需要对Text进行拆分吗?


非常抱歉,我在之前的回答中确实遗漏了对文本进行拆分的步骤。以下是经过修改的代码示例:

from PySide6.QtGui import QTextCharFormat, QColor
from PySide6.QtCore import Qt

def print_with_color(self, text1, text2, color1, color2):
    cursor = self.plainTextEdit.textCursor()
   
    format1 = QTextCharFormat()  # 引号内文字的格式
    format2 = QTextCharFormat()  # 变量名的格式
   
    # 设置颜色
    format1.setForeground(color1)
    format2.setForeground(color2)
   
    # 插入引号中的内容
    cursor.insertText(text1, format1)
   
    # 插入变量名
    cursor.insertText(text2, format2)

# 调用函数
self.print_with_color("您本次报表为:", self.File_Path, Qt.red, Qt.blue)

再次对我的疏忽表示诚挚的道歉,并希望这次的回答能满足您的要求。如还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-24 12:37:10 | 显示全部楼层
FishC 发表于 2024-3-24 12:26
非常抱歉,我在之前的回答中确实遗漏了对文本进行拆分的步骤。以下是经过修改的代码示例:

from PyS ...

如何在第二个变量后加入一个回行\n?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-24 12:37:18 | 显示全部楼层
凊风 发表于 2024-03-24 12:37
如何在第二个变量后加入一个回行\n?


如果您想在第二个变量后添加一个换行符`\n`,可以在插入第二个变量之前,先使用`cursor.insertText()`方法插入一个换行符。以下是修改后的代码示例:from PySide6.QtGui import QTextCharFormat, QColorfrom PySide6.QtCore import Qtdef print_with_color(self, text1, text2, color1, color2):    cursor = self.plainTextEdit.textCursor()        format1 = QTextCharFormat()  # 引号内文字的格式    format2 = QTextCharFormat()  # 变量名的格式        # 设置颜色    format1.setForeground(color1)    format2.setForeground(color2)        # 插入引号中的内容    cursor.insertText(text1, format1)        # 插入一个换行符    cursor.insertText("\n")        # 插入变量名    cursor.insertText(text2, format2)# 调用函数self.print_with_color("您本次报表为:", self.File_Path, Qt.red, Qt.blue)这样,在第一个变量后插入一个换行符后,再插入第二个变量,就可以实现在第二个变量后添加一个回车换行的效果。希望这次的回答能满足您的需求,如有任何疑问,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-24 12:37:45 | 显示全部楼层
FishC 发表于 2024-3-24 12:37
如果您想在第二个变量后添加一个换行符`\n`,可以在插入第二个变量之前,先使用`cursor.insertText()` ...

回复请注意python格式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-24 12:37:57 | 显示全部楼层
凊风 发表于 2024-03-24 12:37
回复请注意python格式


非常抱歉,我没有按照Python代码的格式进行回答。以下是经过修正的Python代码示例:
from PySide6.QtGui import QTextCharFormat, QColor
from PySide6.QtCore import Qt

def print_with_color(self, text1, text2, color1, color2):
    cursor = self.plainTextEdit.textCursor()
    format1 = QTextCharFormat()  # 引号内文字的格式
    format2 = QTextCharFormat()  # 变量名的格式

    # 设置颜色
    format1.setForeground(color1)
    format2.setForeground(color2)

    # 插入引号中的内容
    cursor.insertText(text1, format1)

    # 插入一个换行符
    cursor.insertText("\n")

    # 插入变量名
    cursor.insertText(text2, format2)

# 调用函数
self.print_with_color("您本次报表为:", self.File_Path, Qt.red, Qt.blue)

非常感谢您的指正,希望这样的格式对您更加清晰明了。如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-24 12:55:00 | 显示全部楼层
FishC 发表于 2024-3-24 12:37
非常抱歉,我没有按照Python代码的格式进行回答。以下是经过修正的Python代码示例:

那如果是这样的打印语句,用PySide6又如何设置字体颜色呢?

print('ABC《',DEF, '》GHI')  其中DEF是变量。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-24 12:55:09 | 显示全部楼层
凊风 发表于 2024-03-24 12:55
那如果是这样的打印语句,用PySide6又如何设置字体颜 ...


要根据传入的参数动态设置文字颜色,您可以在打印语句中使用富文本格式。

以下是一个示例代码,演示如何使用PySide6设置打印语句中的文字颜色:
from PySide6.QtGui import QTextCharFormat, QColor
from PySide6.QtCore import Qt

def print_with_color(text1, text2, color1, color2):
    # 设置颜色
    format1 = QTextCharFormat()
    format1.setForeground(color1)
    format2 = QTextCharFormat()
    format2.setForeground(color2)

    # 格式化打印语句
    formatted_text = f'ABC《{text1}》GHI'
    # 插入变量名
    formatted_text = formatted_text.replace('DEF', f'<span style="color:{color2.name()}">{text2}</span>')

    # 输出到控制台
    print(formatted_text)

# 调用函数
print_with_color("您本次报表为:", "DEF", Qt.red, Qt.blue)

在这个例子中,我们使用了富文本格式来设置文字的颜色。我们首先定义了两个`QTextCharFormat`对象,分别用于设置引号内的文字颜色和变量名的颜色。然后,我们格式化打印语句,将变量名部分用HTML标签`<span>`包裹起来,并使用`style`属性设置文字颜色。最后,通过调用`print()`函数将格式化后的文本输出到控制台。

希望这个解决方案能够满足您的需求。如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-26 06:57:38 | 显示全部楼层
FishC 发表于 2024-3-24 12:55
要根据传入的参数动态设置文字颜色,您可以在打印语句中使用富文本格式。

以下是一个示例代码,演示 ...

那如果是这样的打印语句,用PySide6又如何设置字体颜色呢?

print('ABC《',DEF, '》GHI')  其中DEF是变量。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-26 06:57:52 | 显示全部楼层
凊风 发表于 2024-03-26 06:57
那如果是这样的打印语句,用PySide6又如何设置字体颜 ...


如果您要在PySide6中设置打印语句中的文字颜色,可以使用ANSI转义码来实现。ANSI转义码是一种控制字符序列,可以用于在终端中设置文本的样式和颜色。以下是一个示例代码,演示如何使用PySide6设置打印语句中的文字颜色:def print_with_color(text1, text2, color1, color2):    # 设置颜色    color_start = f"\033[{color1}m"    color_end = "\033[0m"    # 格式化打印语句    formatted_text = f'ABC《{text1}》GHI'    # 插入变量名    formatted_text = formatted_text.replace('DEF', f'{color_start}{text2}{color_end}')    # 输出到控制台    print(formatted_text)# 调用函数print_with_color("您本次报表为:", "DEF", "31", "34")在这个例子中,我们使用ANSI转义码来设置文字颜色。我们首先定义了`color_start`和`color_end`两个字符串,分别表示颜色设置的开始和结束。通过将这两个字符串与文本拼接,我们将ANSI转义码应用于待打印的文本中的特定部分。最后,通过调用`print()`函数将格式化后的文本输出到控制台。在该示例中,`"31"`和`"34"`分别代表红色和蓝色的ANSI转义码,这样就可以在打印语句中设置对应的文字颜色。希望这个解决方案能够满足您的需求。如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-26 06:58:59 | 显示全部楼层
FishC 发表于 2024-3-26 06:57
如果您要在PySide6中设置打印语句中的文字颜色,可以使用ANSI转义码来实现。ANSI转义码是一种控制字符 ...

回复请注意python格式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-26 06:59:17 | 显示全部楼层
凊风 发表于 2024-03-26 06:58
回复请注意python格式


非常抱歉,我之前的回复使用了不适合Python的ANSI转义码。在Python中,可以使用`colorama`库来实现控制台输出文字颜色的设置。以下是一个使用`colorama`库设置文字颜色的示例代码:from colorama import init, Fore, Style# 初始化coloramainit()def print_with_color(text1, text2, color1, color2):    # 设置颜色    color_start = ""    color_end = Style.RESET_ALL    if color1 == "red":        color_start = Fore.RED    elif color1 == "blue":        color_start = Fore.BLUE    elif color1 == "green":        color_start = Fore.GREEN    # 格式化打印语句    formatted_text = f'ABC《{text1}》GHI'    # 插入变量名    formatted_text = formatted_text.replace('DEF', f'{color_start}{text2}{color_end}')    # 输出到控制台    print(formatted_text)# 调用函数print_with_color("您本次报表为:", "DEF", "red", "blue")在这个例子中,我们通过导入`colorama`库,并使用`Fore`类中的属性来设置文字颜色。首先,我们使用`init()`函数初始化`colorama`库,然后根据传递的颜色参数,设置`color_start`变量为对应的颜色属性。最后,我们通过`print()`函数将格式化后的文本输出到控制台。在该示例中,"red"和"blue"分别代表红色和蓝色。这样就可以在打印语句中设置对应的文字颜色了。希望这个解决方案能够满足您的需求。如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-22 12:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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