鱼C论坛

 找回密码
 立即注册
查看: 500|回复: 3

[已解决]Tkinter root.option_add()

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

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

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

x
  1. from tkinter import *
  2. root=Tk()
  3. root.option_add("*relief","groove")
  4. root.option_add("*borderwidth",22)
  5. def gyl(m):
  6.       b=Button(root,
  7.                text=m,
  8.                font="方正古隶简体 35 bold",
  9.                foreground="palevioletred")
  10.       b.pack()
  11. gyl("10月10日")
  12. mainloop()
复制代码


程序中的第3句话 root.option_add("*relief","groove") 第4句话 root.option_add("*borderwidth",22),怎么没有起作用啊?
最佳答案
2024-10-10 18:40:19
本帖最后由 不二如是 于 2024-10-10 18:42 编辑

本地有字体文件吗?

root.option_add("*relief","groove") 和 root.option_add("*borderwidth",22) 之所以没有起作用,可能是因为 option_add 设置的全局选项并不能正确地传递给所有控件。

尤其是像 Button 这样的控件,可能需要在创建控件时直接设置这些选项。

解释:

  • relief 控制控件的边框样式,但是它可能需要在具体控件的定义中直接设置,而不是通过 option_add 来设置。
  • borderwidth 控制控件的边框宽度,同样,可能需要在创建控件时直接设置,而不仅仅通过 option_add。

为了确保这些设置生效,可以在创建 Button 的时候直接设置 relief 和 borderwidth:

  1. from tkinter import *
  2. root=Tk()
  3. root.option_add("*relief","groove")
  4. root.option_add("*borderwidth",22)

  5. def gyl(m):
  6.       b=Button(root,
  7.                text=m,
  8.                font="方正古隶简体 35 bold",
  9.                foreground="palevioletred",
  10.                relief="groove",  # 直接指定 relief
  11.                borderwidth=22)   # 直接指定 borderwidth
  12.       b.pack()

  13. gyl("10月10日")
  14. mainloop()
复制代码

relief="groove" 和 borderwidth=22 被直接在 Button 内部指定,这样可以确保样式能够正确应用。
2024-10-9.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-10-10 15:00:22 | 显示全部楼层
在Tkinter中,`root.option_add()`方法用于全局设置选项,会影响该选项选择器匹配的所有组件。你遇到的问题可能是因为选项选择器的使用不正确。

在你的代码中:
  1. root.option_add("*relief", "groove")
  2. root.option_add("*borderwidth", 22)
复制代码

这些设置通过通配符`*`来匹配所有的组件,但却没有生效,是因为`Button`组件没有正确匹配到设置的选项。对于具体组件类型的选项设置,你需要指定组件类型。

可以尝试修改成:
  1. root.option_add("*Button.relief", "groove")
  2. root.option_add("*Button.borderwidth", 22)
复制代码


这样,`relief`和`borderwidth`选项就会应用到所有`Button`组件上。试试这段代码,它应该能够实现你预期的效果。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-10-10 18:40:19 | 显示全部楼层    本楼为最佳答案   
本帖最后由 不二如是 于 2024-10-10 18:42 编辑

本地有字体文件吗?

root.option_add("*relief","groove") 和 root.option_add("*borderwidth",22) 之所以没有起作用,可能是因为 option_add 设置的全局选项并不能正确地传递给所有控件。

尤其是像 Button 这样的控件,可能需要在创建控件时直接设置这些选项。

解释:

  • relief 控制控件的边框样式,但是它可能需要在具体控件的定义中直接设置,而不是通过 option_add 来设置。
  • borderwidth 控制控件的边框宽度,同样,可能需要在创建控件时直接设置,而不仅仅通过 option_add。

为了确保这些设置生效,可以在创建 Button 的时候直接设置 relief 和 borderwidth:

  1. from tkinter import *
  2. root=Tk()
  3. root.option_add("*relief","groove")
  4. root.option_add("*borderwidth",22)

  5. def gyl(m):
  6.       b=Button(root,
  7.                text=m,
  8.                font="方正古隶简体 35 bold",
  9.                foreground="palevioletred",
  10.                relief="groove",  # 直接指定 relief
  11.                borderwidth=22)   # 直接指定 borderwidth
  12.       b.pack()

  13. gyl("10月10日")
  14. mainloop()
复制代码

relief="groove" 和 borderwidth=22 被直接在 Button 内部指定,这样可以确保样式能够正确应用。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-10-11 11:44:27 | 显示全部楼层
不二如是 发表于 2024-10-10 18:40
本地有字体文件吗?

root.option_add("*relief","groove") 和 root.option_add("*borderwidth",22) 之所 ...


好 似 控 件 的 设 置,有 部 分 属 性 是 不 能 通 过  root.option_add( )  来 设 定 的,需 要 通 过 创 建 控 件 时 直 接 设 置 才 有 效 。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-20 01:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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