鱼C论坛

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

[已解决]Tkinter root.option_add()

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

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

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

x
from tkinter import *
root=Tk()
root.option_add("*relief","groove")
root.option_add("*borderwidth",22)
def gyl(m):
      b=Button(root,
               text=m,
               font="方正古隶简体 35 bold",
               foreground="palevioletred")
      b.pack()
gyl("10月10日")
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:
from tkinter import *
root=Tk()
root.option_add("*relief","groove")
root.option_add("*borderwidth",22)

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

gyl("10月10日")
mainloop()
relief="groove" 和 borderwidth=22 被直接在 Button 内部指定,这样可以确保样式能够正确应用。
2024-10-9.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

在你的代码中:
root.option_add("*relief", "groove")
root.option_add("*borderwidth", 22)
这些设置通过通配符`*`来匹配所有的组件,但却没有生效,是因为`Button`组件没有正确匹配到设置的选项。对于具体组件类型的选项设置,你需要指定组件类型。

可以尝试修改成:
root.option_add("*Button.relief", "groove")
root.option_add("*Button.borderwidth", 22)

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> 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:
from tkinter import *
root=Tk()
root.option_add("*relief","groove")
root.option_add("*borderwidth",22)

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

gyl("10月10日")
mainloop()
relief="groove" 和 borderwidth=22 被直接在 Button 内部指定,这样可以确保样式能够正确应用。
想知道小甲鱼最近在做啥?请访问 -> 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( )  来 设 定 的,需 要 通 过 创 建 控 件 时 直 接 设 置 才 有 效 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 06:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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