鱼C论坛

 找回密码
 立即注册
查看: 660|回复: 13

字体颜色设置求教~

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

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

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

x
现有如下打印语句:

print('成功《', Base_Workbook, '》并重命名为《123.xls》'),其中Base_Workbook为变量。

如果要设置 :'成功《'、

Base_Workbook

和  ‘》并重命名为《123.xls》’

为不同的颜色,用PySide6要怎么实现呢?

本帖被以下淘专辑推荐:

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

使用道具 举报

发表于 2024-3-25 13:16:38 | 显示全部楼层
在PySide6中,可以使用QTextCharFormat来设置文字的颜色。您可以按照以下步骤来实现所需效果:

首先,导入必要的模块:
from PySide6.QtWidgets import QApplication
from PySide6.QtGui import QTextCharFormat, QColor
from PySide6.QtCore import Qt

然后,在适当的地方创建一个QTextCharFormat对象,并为每个部分设置不同的颜色。例如:
# 创建QTextCharFormat对象
format = QTextCharFormat()

# 设置第一部分('成功《')的颜色为红色
format.setForeground(QColor(Qt.red))
print('成功《', end='')

# 恢复默认颜色
format.clearForeground()

接下来,可以使用变量`Base_Workbook`的值,如下所示:
# 设置Base_Workbook的颜色为蓝色
format.setForeground(QColor(Qt.blue))
print(Base_Workbook, end='')

# 恢复默认颜色
format.clearForeground()

最后,设置最后一部分('》并重命名为《123.xls》')的颜色为绿色,如下所示:
# 设置最后一部分的颜色为绿色
format.setForeground(QColor(Qt.green))
print('》并重命名为《123.xls》')

完整的代码示例如下:
from PySide6.QtWidgets import QApplication
from PySide6.QtGui import QTextCharFormat, QColor
from PySide6.QtCore import Qt

# 初始化应用程序
app = QApplication([])

# 创建QTextCharFormat对象
format = QTextCharFormat()

# 设置第一部分('成功《')的颜色为红色
format.setForeground(QColor(Qt.red))
print('成功《', end='')

# 恢复默认颜色
format.clearForeground()

# 设置Base_Workbook的颜色为蓝色
format.setForeground(QColor(Qt.blue))
Base_Workbook = 'example.xlsx'
print(Base_Workbook, end='')

# 恢复默认颜色
format.clearForeground()

# 设置最后一部分的颜色为绿色
format.setForeground(QColor(Qt.green))
print('》并重命名为《123.xls》')

# 退出应用程序
app.quit()

希望这个解答对您有所帮助!

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

使用道具 举报

 楼主| 发表于 2024-3-25 13:17:59 | 显示全部楼层
FishC 发表于 2024-3-25 13:16
在PySide6中,可以使用QTextCharFormat来设置文字的颜色。您可以按照以下步骤来实现所需效果:

首先,导 ...

能不能定义成一个函数来方便引用呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-25 13:18:09 | 显示全部楼层
凊风 发表于 2024-03-25 13:17
能不能定义成一个函数来方便引用呢?


当然可以!您可以将上述代码封装成一个函数,以便在需要的时候方便引用。以下是一个示例函数:
from PySide6.QtWidgets import QApplication
from PySide6.QtGui import QTextCharFormat, QColor
from PySide6.QtCore import Qt

def print_with_color_format(text, colors):
    app = QApplication()
    format = QTextCharFormat()

    for i, color in enumerate(colors):
        format.setForeground(QColor(color))
        print(text[i], end='')
        format.clearForeground()

    app.quit()

# 使用示例
text = '成功《Base_Workbook》并重命名为《123.xls》'
colors = ['red', 'blue', 'green']

print_with_color_format(text, colors)

在这个示例中,`text`是要打印的文本字符串,`colors`是一个包含每个部分颜色的列表。通过调用`print_with_color_format`函数,即可实现带有不同颜色的打印效果。

希望这样的函数能满足您的需求!

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

使用道具 举报

 楼主| 发表于 2024-3-25 13:21:05 | 显示全部楼层
FishC 发表于 2024-3-25 13:18
当然可以!您可以将上述代码封装成一个函数,以便在需要的时候方便引用。以下是一个示例函数:

这个函数能体现出来Base_Workbook是变量的情况吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-25 13:21:18 | 显示全部楼层
凊风 发表于 2024-03-25 13:21
这个函数能体现出来Base_Workbook是变量的情况吗?


非常抱歉,之前的函数确实没有考虑到`Base_Workbook`是一个变量的情况。为了体现出`Base_Workbook`是变量的值,我们可以对函数进行一些改进。以下是修改后的代码:
from PySide6.QtWidgets import QApplication
from PySide6.QtGui import QTextCharFormat, QColor
from PySide6.QtCore import Qt

def print_with_color_format(text, variable, colors):
    app = QApplication()
    format = QTextCharFormat()
    
    for i, color in enumerate(colors):
        format.setForeground(QColor(color))
        part = text[i]
        
        if part == "variable":
            part = str(variable)
            
        print(part, end='')
        format.clearForeground()
    
    app.quit()

# 使用示例
text = ['成功《', 'variable', '》并重命名为《123.xls》']
colors = ['red', 'blue', 'green']
Base_Workbook = 'example.xlsx'

print_with_color_format(text, Base_Workbook, colors)

在此示例中,`text`是一个列表,包含了需要打印的各个部分。如果某个部分是变量,则将其表示为字符串`"variable"`。而`colors`仍然是一个包含每个部分颜色的列表。通过调用`print_with_color_format`函数,并传递相应的参数,即可实现带有不同颜色和变量值的打印效果。

希望这次的修改能满足您的需求!

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

使用道具 举报

 楼主| 发表于 2024-3-26 06:38:15 | 显示全部楼层
FishC 发表于 2024-3-25 13:21
非常抱歉,之前的函数确实没有考虑到`Base_Workbook`是一个变量的情况。为了体现出`Base_Workbook`是变 ...

能不能定义成def print_with_color_format(text1,  variable,  Text2, color1,  color2,  color3):

这样的句式?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-26 06:38:24 | 显示全部楼层
凊风 发表于 2024-03-26 06:38
能不能定义成def print_with_color_format(text1,  va ...


当然可以!根据您的要求,我们可以将函数参数定义为`text1`、`variable`、`text2`、`color1`、`color2`和`color3`,并根据相应的颜色变量设置文字的颜色。以下是修改后的代码:from PySide6.QtWidgets import QApplicationfrom PySide6.QtGui import QTextCharFormat, QColorfrom PySide6.QtCore import Qtdef print_with_color_format(text1, variable, text2, color1, color2, color3):    app = QApplication()    format = QTextCharFormat()        format.setForeground(QColor(color1))    print(text1, end='')    format.clearForeground()        format.setForeground(QColor(color2))    print(variable, end='')    format.clearForeground()        format.setForeground(QColor(color3))    print(text2)    format.clearForeground()        app.quit()# 使用示例text1 = '成功《'variable = 'example.xlsx'text2 = '》并重命名为《123.xls》'color1 = 'red'color2 = 'blue'color3 = 'green'print_with_color_format(text1, variable, text2, color1, color2, color3)在此示例中,将文本分成了三个部分:`text1`、`variable`和`text2`。每个部分都有对应的颜色参数。通过调用`print_with_color_format`函数,并传递相应的参数,即可实现带有不同颜色和变量值的打印效果。希望这次的修改满足了您的需求!

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

使用道具 举报

 楼主| 发表于 2024-3-26 06:40:23 | 显示全部楼层
FishC 发表于 2024-3-26 06:38
当然可以!根据您的要求,我们可以将函数参数定义为`text1`、`variable`、`text2`、`color1`、`color2` ...

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

使用道具 举报

发表于 2024-3-26 06:40:34 | 显示全部楼层
凊风 发表于 2024-03-26 06:40
回复请注意Python格式


非常抱歉,下面是符合 Python 格式的修改后的代码:
from PySide6.QtWidgets import QApplication
from PySide6.QtGui import QTextCharFormat, QColor
from PySide6.QtCore import Qt

def print_with_color_format(text1, variable, text2, color1, color2, color3):
    app = QApplication()
    format = QTextCharFormat()

    format.setForeground(QColor(color1))
    print(text1, end='')
    format.clearForeground()

    format.setForeground(QColor(color2))
    print(variable, end='')
    format.clearForeground()

    format.setForeground(QColor(color3))
    print(text2)
    format.clearForeground()

    app.quit()

# 使用示例
text1 = '成功《'
variable = 'example.xlsx'
text2 = '》并重命名为《123.xls》'
color1 = 'red'
color2 = 'blue'
color3 = 'green'
print_with_color_format(text1, variable, text2, color1, color2, color3)

感谢您提醒我注意 Python 的格式规范。希望这次回复符合您的要求!

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

使用道具 举报

 楼主| 发表于 2024-3-26 06:49:02 | 显示全部楼层
FishC 发表于 2024-3-26 06:40
非常抱歉,下面是符合 Python 格式的修改后的代码:

我改写成这样:
    def print_with_color_format(self, text1, variable, text2, color1, color2, color3):

        format.setForeground(QColor(color1))
        print(text1, end='')
        format.clearForeground()

        format.setForeground(QColor(color2))
        print(variable, end='')
        format.clearForeground()

        format.setForeground(QColor(color3))
        print(text2)
        format.clearForeground()

引用self.print_with_color_format('工作簿《', Base_Workbook, '》命名为《123.xls》',
                                                 'yellow', 'blue', 'yellow')

然后报错:format.setForeground(QColor(color1))
    ^^^^^^^^^^^^^^^^^^^^
AttributeError: 'builtin_function_or_method' object has no attribute 'setForeground'

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

使用道具 举报

发表于 2024-3-26 06:49:14 | 显示全部楼层
凊风 发表于 2024-03-26 06:49
我改写成这样:
    def print_with_color_format(se ...


您遇到的错误是因为代码中并没有定义变量 `format`,也缺少了对 `QTextCharFormat` 的实例化。另外,在方法内部使用 `self` 前缀需要确保该方法是类的成员方法。以下是修改后的代码示例:
from PySide6.QtWidgets import QApplication
from PySide6.QtGui import QTextCharFormat, QColor
from PySide6.QtCore import Qt

class MyClass:
    def __init__(self):
        self.app = QApplication()

    def print_with_color_format(self, text1, variable, text2, color1, color2, color3):
        format = QTextCharFormat()  # 实例化 QTextCharFormat
        format.setForeground(QColor(color1))
        print(text1, end='')
        format.clearForeground()
        format.setForeground(QColor(color2))
        print(variable, end='')
        format.clearForeground()
        format.setForeground(QColor(color3))
        print(text2)
        format.clearForeground()

    def run(self):
        Base_Workbook = 'example.xlsx'
        self.print_with_color_format('工作簿《', Base_Workbook, '》命名为《123.xls》', 'yellow', 'blue', 'yellow')

        self.app.quit()

my_instance = MyClass()
my_instance.run()

请注意,在实例化 `QApplication` 后,我们将其保存在 `self.app` 中以便在方法中进行调用,并且在程序结束后调用了 `app.quit()` 来退出应用程序。

希望这次回答能满足您的要求!

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

使用道具 举报

 楼主| 发表于 2024-3-26 06:54:40 | 显示全部楼层
FishC 发表于 2024-3-26 06:49
您遇到的错误是因为代码中并没有定义变量 `format`,也缺少了对 `QTextCharFormat` 的实例化。另外,在 ...

我改写成这样:
    def print_with_color_format(self, text1, variable, text2, color1, color2, color3):
        format = QTextCharFormat()  # 实例化 QTextCharFormat
        format.setForeground(QColor(color1))
        print(text1, end='')
        format.clearForeground()
        format.setForeground(QColor(color2))
        print(variable, end='')
        format.clearForeground()
        format.setForeground(QColor(color3))
        print(text2)
        format.clearForeground()

引用:self.print_with_color_format('工作簿《', Base_Workbook, '》为《123.xls》',
                                                 'yellow', 'blue', 'yellow')

这次没有报错,但是变量Base_Workbook的color2(‘blue')没成功,仍然是'yellow。'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-26 06:54:52 | 显示全部楼层
凊风 发表于 2024-03-26 06:54
我改写成这样:
    def print_with_color_format(se ...


非常抱歉,我之前的回答有误导。在控制台打印中,直接设置字体颜色是无法实现的,因为控制台默认的输出样式不能更改。如果您希望在GUI界面中实现文字不同颜色的效果,可以使用Qt的控件来实现。

以下是一个示例,演示如何在PySide6中使用QLabel来显示不同颜色的文字:
from PySide6.QtWidgets import QApplication, QLabel, QVBoxLayout, QWidget
from PySide6.QtGui import QColor

class MainWindow(QWidget):
    def __init__(self):
        super().__init__()

        # 创建布局,并将其应用于主窗口
        layout = QVBoxLayout(self)

        # 创建QLabel控件
        label1 = QLabel('工作簿《')
        label2 = QLabel(Base_Workbook)
        label3 = QLabel('》命名为《123.xls》')

        # 设置每个QLabel的字体颜色
        label1.setStyleSheet('color: yellow')
        label2.setStyleSheet('color: blue')
        label3.setStyleSheet('color: yellow')

        # 将QLabel添加到布局中
        layout.addWidget(label1)
        layout.addWidget(label2)
        layout.addWidget(label3)

if __name__ == '__main__':
    app = QApplication([])

    Base_Workbook = 'example.xlsx'

    window = MainWindow()
    window.show()

    app.exec()

注意,这个示例是基于PySide6创建的GUI应用程序,而不是在控制台中输出。通过将QLabel控件添加到布局中,并为每个QLabel设置不同的字体颜色,我们可以在GUI界面中实现所需的效果。

希望这次的回答能够满足您的要求!如果您还有其他问题,请随时提问。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 10:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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