鱼C论坛

 找回密码
 立即注册
查看: 150|回复: 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来设置文字的颜色。您可以按照以下步骤来实现所需效果:

首先,导入必要的模块:

  1. from PySide6.QtWidgets import QApplication
  2. from PySide6.QtGui import QTextCharFormat, QColor
  3. from PySide6.QtCore import Qt
复制代码


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

  1. # 创建QTextCharFormat对象
  2. format = QTextCharFormat()

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

  6. # 恢复默认颜色
  7. format.clearForeground()
复制代码


接下来,可以使用变量`Base_Workbook`的值,如下所示:

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

  4. # 恢复默认颜色
  5. format.clearForeground()
复制代码


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

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


完整的代码示例如下:

  1. from PySide6.QtWidgets import QApplication
  2. from PySide6.QtGui import QTextCharFormat, QColor
  3. from PySide6.QtCore import Qt

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

  6. # 创建QTextCharFormat对象
  7. format = QTextCharFormat()

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

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

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

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

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

  22. # 退出应用程序
  23. 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
能不能定义成一个函数来方便引用呢?


当然可以!您可以将上述代码封装成一个函数,以便在需要的时候方便引用。以下是一个示例函数:

  1. from PySide6.QtWidgets import QApplication
  2. from PySide6.QtGui import QTextCharFormat, QColor
  3. from PySide6.QtCore import Qt

  4. def print_with_color_format(text, colors):
  5.     app = QApplication()
  6.     format = QTextCharFormat()

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

  11.     app.quit()

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

  15. 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`是变量的值,我们可以对函数进行一些改进。以下是修改后的代码:

  1. from PySide6.QtWidgets import QApplication
  2. from PySide6.QtGui import QTextCharFormat, QColor
  3. from PySide6.QtCore import Qt

  4. def print_with_color_format(text, variable, colors):
  5.     app = QApplication()
  6.     format = QTextCharFormat()
  7.    
  8.     for i, color in enumerate(colors):
  9.         format.setForeground(QColor(color))
  10.         part = text[i]
  11.         
  12.         if part == "variable":
  13.             part = str(variable)
  14.             
  15.         print(part, end='')
  16.         format.clearForeground()
  17.    
  18.     app.quit()

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

  23. 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 格式的修改后的代码:

  1. from PySide6.QtWidgets import QApplication
  2. from PySide6.QtGui import QTextCharFormat, QColor
  3. from PySide6.QtCore import Qt

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

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

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

  13.     format.setForeground(QColor(color3))
  14.     print(text2)
  15.     format.clearForeground()

  16.     app.quit()

  17. # 使用示例
  18. text1 = '成功《'
  19. variable = 'example.xlsx'
  20. text2 = '》并重命名为《123.xls》'
  21. color1 = 'red'
  22. color2 = 'blue'
  23. color3 = 'green'
  24. 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` 前缀需要确保该方法是类的成员方法。以下是修改后的代码示例:

  1. from PySide6.QtWidgets import QApplication
  2. from PySide6.QtGui import QTextCharFormat, QColor
  3. from PySide6.QtCore import Qt

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

  7.     def print_with_color_format(self, text1, variable, text2, color1, color2, color3):
  8.         format = QTextCharFormat()  # 实例化 QTextCharFormat
  9.         format.setForeground(QColor(color1))
  10.         print(text1, end='')
  11.         format.clearForeground()
  12.         format.setForeground(QColor(color2))
  13.         print(variable, end='')
  14.         format.clearForeground()
  15.         format.setForeground(QColor(color3))
  16.         print(text2)
  17.         format.clearForeground()

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

  21.         self.app.quit()

  22. my_instance = MyClass()
  23. 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来显示不同颜色的文字:

  1. from PySide6.QtWidgets import QApplication, QLabel, QVBoxLayout, QWidget
  2. from PySide6.QtGui import QColor

  3. class MainWindow(QWidget):
  4.     def __init__(self):
  5.         super().__init__()

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

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

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

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

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

  22.     Base_Workbook = 'example.xlsx'

  23.     window = MainWindow()
  24.     window.show()

  25.     app.exec()
复制代码


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

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 04:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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