簡體   English   中英

我正在嘗試更改 tkinter python 中按鈕的邊框顏色

[英]I am trying to change the border color of a button in tkinter python

我正在嘗試更改 python tkinter 中按鈕的邊框顏色,我嘗試將其放入框架中但它不起作用:

import tkinter
from tkinter import *
root = Tk()

l_f = Frame(root, bg="black")
l_f.pack()
l = Button(l_f, text="fdffdfd", bg="white", fg="white")
l.pack()

root.mainloop()

您打包了一個frame ,但沒有設置該 frame 的任何選項,以產生邊框效果。

嘗試: l_f = Frame(root, highlightbackground = "black", highlightthickness = 2, bd=0)


此外,您可以使用LabelFrame代替框架,為按鈕添加邊框。

l_f = LabelFrame(root, bg = "black", bd=2)

使按鈕浮雕與按鈕表面具有不同的顏色並使其像按鈕一樣工作並非易事。

這是一個按鈕的工作示例,其顏色與標准按鈕一樣。

我改變了 Button 按鍵按下和釋放的工作方式,以匹配按鈕行為。

import tkinter as tk

class color_button:

    def virtual(self, o, n, f, args):
        '''virtual(o, n, f, args)'''
        o.event_add(n, *args)
        b = o.bind(n, f)
        return b

    def flexx(self, o, r = 0, c = 0, rw = 1, cw = 1) ->'Set grid manager to grow':
        '''flexx(o(TkContainer), r=0, c=0, rw=1, cw=1)'''
        if r != None:
            o.rowconfigure(r, weight = rw)
        if c != None:
            o.columnconfigure(c, weight = cw)

    def closer(self, ev):
        self.master.destroy()

    def __init__(self, color = "red"):
        self.master = tk.Tk()
        self.flexx(self.master)

        self.frame = tk.LabelFrame(
            self.master, bg = color, bd = 2, relief = "raised")
        self.frame.grid row = 0, column = 0, sticky = "nsew")
        self.flexx(self.frame)
        self.button = tk.Button(
            self.frame, text = "button", relief = "flat",
            bd = 0, command = self.action)
        self.button.grid(row = 0, column = 0, sticky = "nsew")
        self.virtual(
            self.button, "<<PRESS>>",
            self.press, ( "<ButtonPress-1>", "<KeyPress-space>" ))
        self.virtual(
            self.button, "<<RELEASE>>",
            self.release, ( "<ButtonRelease-1>", "<KeyRelease-space>" ))
        self.master.bind("<Escape>", self.closer)

    def press(self, ev):
        self.frame["relief"] = "sunken"
        return "break"

    def release(self, ev):
        self.frame["relief"] = "raised"
        wd = ev.widget
        if ev.num != 1 or wd.winfo_containing( *wd.winfo_pointerxy( )) == wd:
            wd.invoke( )
        return "break"

    def action(self):
        print( "Done" )

if __name__ == "__main__":

    main = color_button( )
    main.master.mainloop()

我正在嘗試更改 python tkinter 中按鈕的邊框顏色,我嘗試將它放在一個框架中,但它不起作用:

import tkinter
from tkinter import *
root = Tk()

l_f = Frame(root, bg="black")
l_f.pack()
l = Button(l_f, text="fdffdfd", bg="white", fg="white")
l.pack()

root.mainloop()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM