"""TextViewer class.The TextViewer allows you to see how the selected color would affect variouscharacteristics of a Tk text widget. This is an output viewer only.In the top part of the window is a standard text widget with some sample textin it. You are free to edit this text in any way you want (BAW: allow you tochange font characteristics). If you want changes in other viewers to updatetext characteristics, turn on Track color changes.To select which characteristic tracks the change, select one of the radiobuttons in the window below. Text foreground and background affect the textin the window above. The Selection is what you see when you click the middlebutton and drag it through some text. The Insertion is the insertion cursorin the text window (which only has a background)."""from tkinter import *import ColorDBADDTOVIEW = 'Text Window...'class TextViewer:def __init__(self, switchboard, master=None):self.__sb = switchboardoptiondb = switchboard.optiondb()root = self.__root = Toplevel(master, class_='Pynche')root.protocol('WM_DELETE_WINDOW', self.withdraw)root.title('Pynche Text Window')root.iconname('Pynche Text Window')root.bind('<Alt-q>', self.__quit)root.bind('<Alt-Q>', self.__quit)root.bind('<Alt-w>', self.withdraw)root.bind('<Alt-W>', self.withdraw)## create the text widget#self.__text = Text(root, relief=SUNKEN,background=optiondb.get('TEXTBG', 'black'),foreground=optiondb.get('TEXTFG', 'white'),width=35, height=15)sfg = optiondb.get('TEXT_SFG')if sfg:self.__text.configure(selectforeground=sfg)sbg = optiondb.get('TEXT_SBG')if sbg:self.__text.configure(selectbackground=sbg)ibg = optiondb.get('TEXT_IBG')if ibg:self.__text.configure(insertbackground=ibg)self.__text.pack()self.__text.insert(0.0, optiondb.get('TEXT', '''\Insert some stuff here and playwith the buttons below to seehow the colors interact intextual displays.See how the selection can alsobe affected by tickling the buttonsand choosing a color.'''))insert = optiondb.get('TEXTINS')if insert:self.__text.mark_set(INSERT, insert)try:start, end = optiondb.get('TEXTSEL', (6.0, END))self.__text.tag_add(SEL, start, end)except ValueError:# selection wasn't setpassself.__text.focus_set()## variablesself.__trackp = BooleanVar()self.__trackp.set(optiondb.get('TRACKP', 0))self.__which = IntVar()self.__which.set(optiondb.get('WHICH', 0))## track toggleself.__t = Checkbutton(root, text='Track color changes',variable=self.__trackp,relief=GROOVE,command=self.__toggletrack)self.__t.pack(fill=X, expand=YES)frame = self.__frame = Frame(root)frame.pack()## labelsself.__labels = []row = 2for text in ('Text:', 'Selection:', 'Insertion:'):l = Label(frame, text=text)l.grid(row=row, column=0, sticky=E)self.__labels.append(l)row += 1col = 1for text in ('Foreground', 'Background'):l = Label(frame, text=text)l.grid(row=1, column=col)self.__labels.append(l)col += 1## radiosself.__radios = []for col in (1, 2):for row in (2, 3, 4):# there is no insertforeground optionif row==4 and col==1:continuer = Radiobutton(frame, variable=self.__which,value=(row-2)*2 + col-1,command=self.__set_color)r.grid(row=row, column=col)self.__radios.append(r)self.__toggletrack()def __quit(self, event=None):self.__root.quit()def withdraw(self, event=None):self.__root.withdraw()def deiconify(self, event=None):self.__root.deiconify()def __forceupdate(self, event=None):self.__sb.update_views_current()def __toggletrack(self, event=None):if self.__trackp.get():state = NORMALfg = self.__radios[0]['foreground']else:state = DISABLEDfg = self.__radios[0]['disabledforeground']for r in self.__radios:r.configure(state=state)for l in self.__labels:l.configure(foreground=fg)def __set_color(self, event=None):which = self.__which.get()text = self.__textif which == 0:color = text['foreground']elif which == 1:color = text['background']elif which == 2:color = text['selectforeground']elif which == 3:color = text['selectbackground']elif which == 5:color = text['insertbackground']try:red, green, blue = ColorDB.rrggbb_to_triplet(color)except ColorDB.BadColor:# must have been a color namered, green, blue = self.__sb.colordb().find_byname(color)self.__sb.update_views(red, green, blue)def update_yourself(self, red, green, blue):if self.__trackp.get():colorname = ColorDB.triplet_to_rrggbb((red, green, blue))which = self.__which.get()text = self.__textif which == 0:text.configure(foreground=colorname)elif which == 1:text.configure(background=colorname)elif which == 2:text.configure(selectforeground=colorname)elif which == 3:text.configure(selectbackground=colorname)elif which == 5:text.configure(insertbackground=colorname)def save_options(self, optiondb):optiondb['TRACKP'] = self.__trackp.get()optiondb['WHICH'] = self.__which.get()optiondb['TEXT'] = self.__text.get(0.0, 'end - 1c')optiondb['TEXTSEL'] = self.__text.tag_ranges(SEL)[0:2]optiondb['TEXTINS'] = self.__text.index(INSERT)optiondb['TEXTFG'] = self.__text['foreground']optiondb['TEXTBG'] = self.__text['background']optiondb['TEXT_SFG'] = self.__text['selectforeground']optiondb['TEXT_SBG'] = self.__text['selectbackground']optiondb['TEXT_IBG'] = self.__text['insertbackground']
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。