0
 from Tkinter import *
 import os

 ALL = N+S+W+E

 class Application(Frame):
def __init__(self, master=None):
    Frame.__init__(self, master)
    self.master.rowconfigure(0, weight=1)
    self.master.columnconfigure(0, weight=1)
    self.grid(sticky=ALL)

    for r in range(2):
        self.rowconfigure(r, weight=1)

        names = {0:'RED', 1:'BLUE', 2:'GREEN', 3:'BLACK', 4:'OPEN'}    
    for c, colname in enumerate(names):
        name = names[c]
        self.columnconfigure(c, weight=1)
        if colname < 4:
            Button(self, text=name, command = lambda x = name:  self.setcolor(x)).grid(row=2, column=c, sticky=ALL)
        else:
            Button(self ,width =30, text=name, command=self.doFileOpen).grid(row=2,column=c,sticky=ALL)  

    Frame1 = Frame(self, bg="red")
    Frame1.grid(row = 0, column = 0, rowspan = 1, columnspan = 2, sticky = ALL)
    Frame1.bind("<Button-1>", self.handler_1)
    Frame2 = Frame(self, bg="yellow")
    Frame2.grid(row = 1, column = 0, rowspan = 1, columnspan = 2, sticky = ALL)
    Frame2.bind("<Button-1>", self.handler_2)
    Frame3 = Frame(self)
    Frame3.grid(row = 0, column = 2, rowspan = 2, columnspan = 3, sticky = ALL)
    self.text_in = Entry(Frame3)
    self.output = Text(Frame3)
    self.text_in.pack(fill = X, expand=False)
    self.output.pack(fill = BOTH, expand=True)


def handler_1(event):
        print("clicked Frame 1 at", event.x, event.y)

def handler_2(event):
        print("clicked Frame 2 at", event.x, event.y)

def doFileOpen(self):
    eText = self.text_in.get()
    self.output.delete(1.0,END)
    self.output.insert(1.0, eText)

def setcolor(self,bname):



 root = Tk()
 app = Application(master=root)
 app.mainloop()

ボタンの1つを押したときにsetcolor定義が呼び出されるようにしようとしています<4。セットの色定義の書き込みに問題があります。ボタンを押したら、入力ボックスから収集されたテキスト ボックス内のテキストの色を変更する最良の方法は何ですか? 「RED」ボックスをクリックすると、テキストが赤くなり、「BLUE」が青くなります。

dofileopen を再度呼び出す必要がありますか、それとも事後に色を変更することはできますか?

4

2 に答える 2

1

正しく理解できているかどうかはわかりませんがsetcolor、色を取得して適切なテキストボックスの色を設定するように関数を作成する方法を尋ねていますか?あなたは次のようなことをすることができます:

def setcolor(self,bname):
    if bname == "RED": #or 1, can't tell how you've written it
        self.text_in.config(foreground = RED) #I think that's how colors work in tkinter
    elif bname == "BLUE":
        self.text_in.config(foreground = BLUE)
    #etc etc

それはあなたが変更したいものをself持っていることを前提としています。Entry

于 2013-01-14T16:41:03.063 に答える
1

すべてのTkinterウィジェットには、configureそのウィジェットに関連付けられているオプションを変更できるメソッドがあります。たとえば、ウィジェットの前景色を変更するには、次のようにします。

self.output.configure(foreground="red")

テキストウィジェットの場合、タグを設定し、そのタグをテキストの範囲に追加することで、文字の範囲の属性を変更できます。例えば:

self.output.tag_configure("tag1", foreground="red")
...
self.output.tag_add("tag1", 1.0, 2.0)
于 2013-01-14T16:42:04.593 に答える