【问题标题】:Tkinter's button can't change border colorTkinter 的按钮不能改变边框颜色
【发布时间】:2018-04-19 17:51:28
【问题描述】:

这是我的 Tkinter 代码:

Photoshop = Tkinter.Button(root, 
    text = 'Photoshop',
    fg = '#37d3ff',
    bg = '#001d26',
    bd =  10, 
    highlightthickness=4, 
    highlightcolor="#37d3ff", 
    highlightbackground="#37d3ff", 
    borderwidth=4)

但是,在我对 Button 进行网格化后,边框的颜色没有显示出来。相反,它使用默认灰色。

【问题讨论】:

  • 这不是human-readable 代码
  • 你不能用 tkinter 改变边框颜色。 highlightcolorhighlightbackground 不是边框颜色,它们是按钮获得焦点时显示的高亮环的颜色。

标签: python button tkinter


【解决方案1】:

您可以像这样将按钮放置在自己的框架内:

buttonborder = Tkinter.Frame(root,
                             highlightbackground="#37d3ff",
                             highlightcolor="#37d3ff",
                             highlightthickness=4,
                             bd=0)

photoshop = Tkinter.Button(buttonborder, 
                           text='Photoshop',
                           fg='#37d3ff',
                           bg='#001d26')

【讨论】:

    【解决方案2】:

    这对我有用:

    import Tkinter as tk
    
    root = tk.Tk()
    
    Photoshop = tk.Button(root, text = 'Photoshop',
                          fg = '#37d3ff',
                          bg = '#001d26',
                          bd =  10, 
                          highlightthickness=4, 
                          highlightcolor="#37d3ff", 
                          highlightbackground="#37d3ff", 
                          borderwidth=4)
    Photoshop.pack()
    
    root.mainloop()
    

    【讨论】:

      【解决方案3】:

      您可以将您的小部件添加到框架,并使框架的高亮背景成为您想要的小部件边框颜色。代码示例:

      import tkinter as tk
      
      root = tk.Tk()
      
      buttonborder = tk.Frame(root, highlightbackground="#37d3ff",
                                        highlightthickness=3, bd=0)
      photoshop = tk.Button(buttonborder, text='Photoshop', fg='#37d3ff')
      photoshop.pack()
      buttonborder.pack()
      
      root.mainloop()
      

      【讨论】:

        【解决方案4】:

        您可以使用 LabelFrame()relief 来实现。 在 Windows 中工作。

        from tkinter import *
        
        App = Tk()
        
        Border = LabelFrame(App,
                            bd=5, #<- Borderwidth.
                            bg="blue", #<- Border color.
                            relief=FLAT)
        Border.pack(padx=10, pady=10)
        
        Btn1 = Button(Border, #<- in Border Widget.
                      text="Button", 
                      font="Arial 16 bold",
                      width=16,
                      bg="red",
                      fg="white",
                      relief=FLAT)
        Btn1.pack()
        
        App.mainloop()
        

        【讨论】:

          【解决方案5】:

          不幸的是,没有完美的方法可以做到这一点,但是您肯定可以随意放置一个比实际按钮大一点的 tkinter 框架,通过使用框架作为彩色边框将它们分开,像这样.应该在 Win 和 Mac 或任何其他操作系统上工作.. (假设您已经知道如何使用 tkinter 根窗口..) `borderFrame = Frame(root, bg="red(你想要的颜色选择)") borderFrame.pack(padx=21, pady=21)

           button = Button(borderFrame, bg="blue",text="click me", relief='flat')
           button.pack(padx=20, pady=20)`
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-05-17
            • 1970-01-01
            • 2017-02-22
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多