2009-10-07 12 views
13

मैं प्रोग्रामिंग पायथन में टिंकर अध्यायों के माध्यम से काम कर रहा हूं और एक समस्या का सामना करना पड़ा जहां एक बटन का अग्रभूमि और पृष्ठभूमि रंग नहीं बदलेगा। मैं पाइथन 2.6.1 के साथ मैक ओएस एक्स 10.6 सिस्टम पर काम कर रहा हूं। एक लेबल के रंग बदल जाएंगे, लेकिन बटन के रंग नहीं। उदाहरण के लिए:मैक ओएस एक्स पर टिंकर बटन के अग्रभूमि या पृष्ठभूमि रंग को कैसे बदला जाए?

from Tkinter import * 

Label(None, text='label', fg='green', bg='black').pack() 
Button(None, text='button', fg='green', bg='black').pack() 

mainloop() 

मेरे Mac प्रणाली पर लेबल परिवर्तन के रंग, लेकिन बटन के रंग नहीं है। पाइथन 2.6.1 के साथ एक विंडोज सिस्टम पर लेबल और बटन दोनों के रंग बदल जाते हैं।

कोई भी जानता है कि क्या गलत हो रहा है?

मैंने इंटरफ़ेस बिल्डर की जांच की है और ऐसा लगता है कि उस टूल में किसी बटन के अग्रभूमि या पृष्ठभूमि रंग को बदलने का कोई विकल्प नहीं है। लेबल के अग्रभूमि और पृष्ठभूमि रंगों को संपादित करने की क्षमता है।

मैक ओएस एक्स रेंडरिंग सिस्टम (क्वार्ट्ज?) सिर्फ एक बटन के एफजी और बीजी को बदलने (आसानी से) का समर्थन नहीं कर सकता है।

उत्तर

17

मुझे लगता है कि जवाब यह है कि मैक पर बटन बस पृष्ठभूमि और अग्रभूमि रंगों को बदलने का समर्थन नहीं करते हैं। जैसा कि आपने देखा है, यह रुपये के लिए अद्वितीय नहीं है।

+0

हाँ, धन्यवाद। आपके लिए आसान स्वीकार :)। एक बेहतर जवाब के साथ आता है। –

10

किसी भी अन्य व्यक्ति के लिए जो इस प्रश्न पर होता है, समाधान ttk मॉड्यूल का उपयोग करना है, जो ओएस एक्स 10.7 पर डिफ़ॉल्ट रूप से उपलब्ध है। दुर्भाग्यवश, पृष्ठभूमि रंग सेट करना अभी भी बॉक्स से बाहर काम नहीं करता है, लेकिन टेक्स्ट रंग करता है।

मूल::

from Tkinter import * 

Label(None, text='label', fg='green', bg='black').pack() 
Button(None, text='button', fg='green', bg='black').pack() 

mainloop() 
टीटीके साथ

:

import tkinter as tk 
from tkinter import ttk 

root = tk.Tk() 

# background="..." doesn't work... 
ttk.Style().configure('green/black.TLabel', foreground='green', background='black') 
ttk.Style().configure('green/black.TButton', foreground='green', background='black') 

label = ttk.Label(root, text='I am a ttk.Label with text!', style='green/black.TLabel') 
label.pack() 

button = ttk.Button(root, text='Click Me!', style='green/black.TButton') 
button.pack() 

root.mainloop() 
0

मैं क्यों इस रूप में अच्छी तरह से काम नहीं करता है के रूप में देख रहा था

यह कोड में कुछ बदलाव करने की आवश्यकता है। मुझे कोशिश करने और ठीक करने का एक त्वरित तरीका मिला है कि लेबल होना है और फिर लेबल के साथ एक क्लिक बांधना है। फिर क्लिक करने की नकल करने के लिए लेबल को कम समय के लिए रंग बदलें। यहाँ एक उदाहरण है।

def buttonPress(*args): 
    searchB.config(state = "active") 
    searchB.update() 
    time.sleep(0.2) 
    searchB.config(state = "normal") 
    ## Whatever command you want 

    searchB = Label(main, text = "Search", bg = "#fecc14", fg = "Black", activebackground = "Red", highlightbackground="Black") 
    searchB.bind("<Button-1>", startSearch) 
    searchB.pack() 
5

मैक पर बटन की पृष्ठभूमि को बदलने के लिए एक समाधान नहीं है।

उपयोग:

highlightbackground=color 

उदाहरण के लिए:

submit = Button(root, text="Generate", highlightbackground='#3E4149') 

यह निम्नलिखित में परिणाम है, एक अच्छा बटन कि पृष्ठभूमि के साथ में फिट बैठता है:

Button

1

पुष्टि निम्नलिखित कोड मैक पर टिंकर बटन की पृष्ठभूमि बदल सकता है ओएस एक्स

self.btn_open = tk.Button(self.toolbar, 
          text = "Open", 
          command=self.open, 
          highlightbackground = "gray") 

लेकिन यह ttk.button का बीजी नहीं बदल सकता है।

+0

यह सही उत्तर – Chaikitty

1

यह मेरे लिए काम किया:

self.gnuplot_bt = Button(
     self.run_but_container, text="Plot with Gnuplot", font="Helvetica", command=self.gnuplot, 
     highlightbackground ="#8EF0F7", pady=2, relief=FLAT 
    ) 
+0

अद्भुत होना चाहिए; वास्तव में, 'क्वर्ग: हाइलाइटबैकग्राउंड' टिंकर ओएसएक्स के साथ काम करता है –

संबंधित मुद्दे