def text_view(view_text: str, title='TkPy text view', geometry=None, min_size=None, max_size=None, base_root=None): def Copy(): copy_text = text.get(tk.SEL_FIRST, tk.SEL_LAST) or text.get( 0.0, tk.END) pyperclip.copy(copy_text) root = tk.Toplevel(base_root) root.transient(base_root) root.title(title) root.resizable(0, 0) if geometry is not None: root.geometry(geometry) if min_size: root.minsize(*min_size) if max_size: root.maxsize(max_size) text = tk.Text(root) ycrollbar = tk.Scrollbar(root) Frame = tk.Frame(root) CopyButton = ttk.Button(Frame, text='复制', command=Copy) CloseButton = ttk.Button(Frame, text='关闭', command=root.destroy) text.insert(tk.END, view_text) CopyButton.pack(fill=tk.X, expand=True, side=tk.RIGHT) CloseButton.pack(fill=tk.X, expand=True, side=tk.LEFT) ycrollbar.config(command=text.yview) Frame.pack(side=tk.BOTTOM, fill=tk.X, expand=True) ycrollbar.pack(side=tk.RIGHT, fill=tk.Y) text.pack(fill=tk.BOTH, expand=True) text.config(yscrollcommand=ycrollbar.set, state=tk.DISABLED) root.mainloop()
def __createWidgets(self) -> None: # <pane> self.pane = ttk.PanedWindow(self, orient=tix.HORIZONTAL) self.pane.rowconfigure(0, weight=1) self.pane.rowconfigure(1, weight=1) self.pane.columnconfigure(1, weight=1) self.pane.grid(column=0, row=0, sticky=tuple(STICK_HORIZONTAL)) self.key_label = ttk.Label(self.pane) self.key_label["text"] = "Key:" self.key_label.grid(column=0, row=0, sticky=tuple(STICK_W)) self.key_value = tk.StringVar() self.key = ttk.Entry(self.pane, textvariable=self.key_value) self.key.grid(column=1, row=0, sticky=tuple(STICK_ALL), padx=(5, 2), pady=(1, 2)) self.key.focus_set() self.salt_label = ttk.Label(self.pane) self.salt_label["text"] = "Salt:" self.salt_label.grid(column=0, row=1, sticky=tuple(STICK_W)) self.salt_value = tk.StringVar() self.salt = ttk.Entry(self.pane, textvariable=self.salt_value) self.salt.grid(column=1, row=1, sticky=tuple(STICK_ALL), padx=(5, 2), pady=(2, 1)) self.button = ttk.Button(self.pane) self.button["text"] = "计算!" self.button["command"] = self.generate_password self.button.grid(column=2, rowspan=2, row=0, sticky=tuple(STICK_VERTICAL), padx=(2, 0)) # </pane> # <scrollpane> self.scrollpane = ttk.PanedWindow(self, orient=tix.HORIZONTAL) self.scrollpane.grid(column=0, row=1, sticky=tuple(STICK_ALL), padx=5) self.scrollpane.columnconfigure(0, weight=1) self.scrollpane.rowconfigure(0, weight=1) self.text = tix.Text(self.scrollpane, autosep=1) self.text.grid(column=0, row=0, sticky=tuple(STICK_ALL)) self.text['state'] = 'disabled' self.scrollbar = ttk.Scrollbar(self.scrollpane, orient=tix.VERTICAL, command=self.text.yview) self.scrollbar.grid(column=1, row=0, sticky=tuple(STICK_ALL)) self.text['yscrollcommand'] = self.scrollbar.set
def _createWidgets_(self): self.fsFrame = tk.Frame(self.mFrame) self.tk_setPalette(background = '#F2D7D5') ##F2D7D5 self.btQuit = tk.Button(self.mFrame) self.btQuit.config(text = 'Завершить', command = self.root.destroy) self.btQuit.pack(side =tk.BOTTOM) ##self.loadFrame = tk.LabelFrame(self.fsFrame) ##self.listBMsg = tk.Listbox(self.loadFrame, relief='flat') self.topElemsFrame = tk.Frame(self.fsFrame) self.btnLstFrame = tk.LabelFrame(self.topElemsFrame) self.smplUnqOptFrame = tk.Frame(self.topElemsFrame) self.smplUnqOptLabelF = tk.LabelFrame(self.smplUnqOptFrame) self._lbSmplUnqOptLabelF_ = self.getSubWgts(self.smplUnqOptLabelF, tk._dummyLabel) self._lbSmplUnqOptLabelF_.config(text = "Уник. сэмпл.") self._frSmplUnqOptLabelF_ = self.getSubWgts(self.smplUnqOptLabelF, tk._dummyFrame) self.cbIfCutUrl = tk.Checkbutton(self._frSmplUnqOptLabelF_, text = "Сократ. Url в назв. сэмпл.", variable = self._varIfCutUrlInSmpl_) self.smplThruNum = tk.LabelFrame(self._frSmplUnqOptLabelF_) self._lbSmplThruNum_ = self.getSubWgts(self.smplThruNum, tk._dummyLabel) self._lbSmplThruNum_.config(text = "Скозн. нумер.") self._frSmplThruNum_ = self.getSubWgts(self.smplThruNum, tk._dummyFrame) self.smplThruNumCntrl = tk.Radiobutton(self._frSmplThruNum_, text = "Контроллер", variable = self._varRbSmplThruNum_, value = "Controller") self.smplThruNumThGr = tk.Radiobutton(self._frSmplThruNum_, text = "ТредГрупп", variable = self._varRbSmplThruNum_, value = "ThreadGroup") self.smplThruNumTstPl = tk.Radiobutton(self._frSmplThruNum_, text = "ТестПлан", variable = self._varRbSmplThruNum_, value = "TestPlan") self.smplThruNumCntrl.pack(side = tk.TOP, anchor = tk.W) self.smplThruNumThGr.pack(side = tk.TOP, anchor = tk.W) self.smplThruNumTstPl.pack(side = tk.TOP, anchor = tk.W) self.cbIfNotRstrUnqInSmpl = tk.Checkbutton(self._frSmplUnqOptLabelF_, text = "Не восст. ориг. назв. сэмпл.", variable = self._varCbIfNotRstrUnqInSmpl_) self.cbIfCutUrl.pack(side = tk.TOP, anchor = tk.W) self.smplThruNum.pack(side = tk.TOP, anchor = tk.W) self.cbIfNotRstrUnqInSmpl.pack(side = tk.TOP, anchor = tk.W) self.smplUnqOptLabelF.pack(anchor = tk.E) self.smplUnqOptFrame.config(width = self.smplThruNum.winfo_reqwidth(), padx = 100) self.paramVolatilFrame = tk.Frame(self.topElemsFrame) self.update_idletasks() leftCornerWidth = self._frSmplUnqOptLabelF_.winfo_reqwidth() + int(self.smplUnqOptLabelF.cget("borderwidth")) * 2 leftCornerHeight = self.smplUnqOptLabelF.winfo_reqheight() + 2 self.paramVolatilFrame.config(width = leftCornerWidth + 202, height = leftCornerHeight) self.paramVolatilFrame.pack_propagate(0) self.paramVolatilLabel = tk.LabelFrame(self.paramVolatilFrame) self._lbParamVolatilLabel_ = self.getSubWgts(self.paramVolatilLabel, tk._dummyLabel) self._lbParamVolatilLabel_.config(text = "Статистика") self._frParamVolatilLabel_ = self.getSubWgts(self.paramVolatilLabel, tk._dummyFrame) self.frBtGetVolatilPrm = tk.Frame(self._frParamVolatilLabel_) self.btBtGetVolatilPrm = tk.Button(self.frBtGetVolatilPrm, text="Получ. стат. по парам.") self.rBtGetVolatilPrm = tk.Radiobutton(self.frBtGetVolatilPrm, text = 'Волатил. ', variable = self._volatilPrm_, value = True) self.rBtGetNonVolatilPrm = tk.Radiobutton(self.frBtGetVolatilPrm, text = 'Не волатил.', variable = self._volatilPrm_, value = False) self.btBtGetVolatilPrm.config(relief='groove') self.btBtGetVolatilPrm.config(command = self.prcdfGetVolatilPrms) self.frBtGetVolatilPrm.pack(side = tk.TOP, anchor = tk.W) self.btBtGetVolatilPrm.pack(side = tk.LEFT) self.rBtGetVolatilPrm.pack(side = tk.TOP, anchor = tk.W) self.rBtGetNonVolatilPrm.pack(side = tk.TOP, anchor = tk.W) self.paramVolatilLabel.pack(anchor = tk.W) ##self.msgsToAscFrame = tk.Listbox(self.loadFrame, relief='flat', selectmode='multiple') ##self.vScroll = tk.Scrollbar(self.loadFrame, orient=tk.VERTICAL) ##self.msgsToAscFrame.config( yscrollcommand=self.vScroll.set) self.consFrame = tk.LabelFrame(self.mFrame) #self.varsFrame = tk.LabelFrame(self.fsFrame) ##self.btnCollctnFrame = tk.LabelFrame(self.fsFrame) self.mCllctnFrame = tk.Frame(self.mFrame) self._lbBtnLstFrame_ = self.getSubWgts(self.btnLstFrame, tk._dummyLabel) self._lbBtnLstFrame_.config(text = 'Раб. с исх. Xml-дер.') self._frBtnLstFrame_ = self.getSubWgts(self.btnLstFrame, tk._dummyFrame) self.varsFrame = tk.Frame(self._frBtnLstFrame_, borderwidth=2, bg = 'blue') self.vrSPathFrame = tk.Label(self.varsFrame) self.vrFnameFrame = tk.Label(self.varsFrame) self.vrUnqFNmFrame = tk.Label(self.varsFrame) #self.vrPileCllctnFrame = tk.Label(self.varsFrame) self.vrRestreFNmFrame = tk.Label(self.varsFrame) self._btnLstFrame_ = tk.Frame(self._frBtnLstFrame_, borderwidth = 2) self.btCatchJMXFiles = tk.Button(self._btnLstFrame_, text="Собрать все \n.jmx файлы", fg="green") #self.btCatchJMXFiles.config(command = self.testFrame) self.btCatchJMXFiles.config(command = self.prcdCatchJMXFiles) self.btCatchJMXFiles.config(relief='raised') self.btCatchJMXFiles.pack(fill = 'x') #self.jmscdObj.setFName = 'toParce.jmx' self.btGetJMXMkTree = tk.Button(self._btnLstFrame_, text="Получить дерево из \n.jmx файла", fg="green") self.btGetJMXMkTree.config(command = self.prcdGetJMXMkTree) self.btGetJMXMkTree.config(relief='raised') self.btGetJMXMkTree.pack(fill = 'x') self.btTreeUnqNms = tk.Button(self._btnLstFrame_, text="Сген. колл. \nс уник. именами") self.btTreeUnqNms.config(command = self.prcdTreeUnqNms) self.btTreeUnqNms.config(relief='raised', state = tk.DISABLED) self.btTreeUnqNms.pack(fill = 'x') self.btRstrOrigNms = tk.Button(self._btnLstFrame_, text="Восст. ориг. имена\nдля получен. колл.") self.btRstrOrigNms.config(command = self.prcdRstrOrigNms) self.btRstrOrigNms.config(relief='raised') self.btRstrOrigNms.pack(fill = 'x') self.vrSPathLabel = tk.Label(self.vrSPathFrame) self.vrSPathValue = tk.Entry(self.vrSPathFrame, bg='white') self.vrSPathLabel.config(text='Каталог с (*.jmx) файл.:', justify = tk.LEFT) self.vrSPathValue.config(justify = tk.LEFT) self.vrSPathValue.insert(0, self.jmscdObj.setPATH) self.vrSPathLabel.pack(side = tk.LEFT) self.vrSPathValue.pack(side = tk.LEFT) self.vrSPathFrame.pack(side = tk.TOP) self.vrFnameLabel = tk.Label(self.vrFnameFrame) self.vrFnameValue = tk.Entry(self.vrFnameFrame, bg='white') self.vrFnameLabel.config(text='Файл(*.jmx) для парам.:', justify = tk.LEFT) self.vrFnameValue.config(justify = tk.LEFT) self.vrFnameValue.insert(0, self.jmscdObj.setFName) self.vrFnameLabel.pack(side = tk.LEFT) self.vrFnameValue.pack(side = tk.LEFT) self.vrFnameFrame.pack(side=tk.TOP) self.vrUnqFNmLabel = tk.Label(self.vrUnqFNmFrame) self.vrUnqFNmValue = tk.Entry(self.vrUnqFNmFrame, bg = 'white') self.vrUnqFNmLabel.config(text='Файл(*.jmx), униф. элм.:', justify = tk.LEFT) self.vrUnqFNmValue.config(justify = tk.LEFT) self.vrUnqFNmValue.insert(0, self.jmscdObj.outFileUniqueNames) self.vrUnqFNmLabel.pack(side = tk.LEFT) self.vrUnqFNmValue.pack(side = tk.LEFT) self.vrUnqFNmFrame.pack(side=tk.TOP) self.vrRestreFNmLabel = tk.Label(self.vrRestreFNmFrame) self.vrRestreFNmValue = tk.Entry(self.vrRestreFNmFrame, bg = 'white') self.vrRestreFNmLabel.config(text='Файл(*.jmx), восcт. элм.:', justify = tk.LEFT) self.vrRestreFNmValue.config(justify = tk.LEFT) self.vrRestreFNmValue.insert(0, self.jmscdObj.outFileRestrdOrig) self.vrRestreFNmLabel.pack(side = tk.LEFT) self.vrRestreFNmValue.pack(side = tk.LEFT) self.vrRestreFNmFrame.pack(side=tk.TOP) self._btnLstFrame_.pack(side = tk.TOP) self.varsFrame.pack(side=tk.TOP) ## self.frPileOptns = tk.LabelFrame(self.mCllctnFrame) self._lbFrPileOptns_ = self.getSubWgts(self.frPileOptns, tk._dummyLabel) self._lbFrPileOptns_.config(text = 'Получ. осн. колл.') self._frPileOptns_ = self.getSubWgts(self.frPileOptns, tk._dummyFrame) self.scrollPileMCllt = tk.Scrollbar(self._frPileOptns_, orient = tk.VERTICAL) self.scrollPileMCllt.pack(side = tk.RIGHT, fill = 'y') self.lsbxPileMCllct = tk.Listbox(self._frPileOptns_, height = 4, width = 34, yscrollcommand = self.scrollPileMCllt.set) for itm in range(4): self.lsbxPileMCllct.insert(tk.END, '--') self.btPileMCllct = tk.Button(self._frPileOptns_, text="Аккумул. раб. коллекц.") self.btPileMCllct.config(command = self.prcdPileMCllct, relief='groove') self.lsbxPileMCllct.pack(side = tk.TOP) self.btPileMCllct.pack(side = tk.TOP) self.frPileOptns.pack(side = tk.LEFT) self.scrollPileMCllt.config(command = self.lsbxPileMCllct.yview) self.frOutRslts = tk.LabelFrame(self.mCllctnFrame) self._lbFrOutRslts_ = self.getSubWgts(self.frOutRslts, tk._dummyLabel) self._lbFrOutRslts_.config(text = 'Текущ. знач.') self._frOutRslts_ = self.getSubWgts(self.frOutRslts, tk._dummyFrame) self.entStrVar = tk.StringVar(self._frOutRslts_) #self.entStrVar.set(self.jmscdObj.entityNames[2]) # default value self.lstWrkEnts = tk.OptionMenu(self._frOutRslts_, variable = self.entStrVar) for ent in self.jmscdObj.entityNames: self.lstWrkEnts.add_command(ent) self.entStrVar.set(self.jmscdObj.entityNames[2]) #self.lstWrkEnts = tk.Listbox(self.mCllctnFrame) ##Опция выбора сущности на данный момент выключена ####self.lstWrkEnts.pack(side = tk.TOP) self.tstOutText = tk.Text(self._frOutRslts_, state = tk.DISABLED, bg='#FFEFD5')#, width=64) self.tstOutText.pack(side = tk.TOP) self.txtWdgtDelete(False) self.txtWdgtInsert(self._initText_) # self.frWrInfExtCntrlElm = tk.Frame(self._frOutRslts_) self.btWriteChngsToF = tk.Button(self.frWrInfExtCntrlElm, text='Запис. изм.\nв файл') self.btWriteChngsToF.config(command = self.prcdWrtXmlTree) self.btUpdateXMLTree = tk.Button(self.frWrInfExtCntrlElm, text='Обнов. \nxml-дерево') self.btUpdateXMLTree.config(command = self.prcdUpdtXMLTree, state = tk.DISABLED) self.btUpdateXMLTree.pack(side = tk.LEFT) self.btWriteChngsToF.pack(side = tk.LEFT) self.frWrInfExtCntrlElm.pack(side = tk.BOTTOM) # self.frOutRslts.pack(side = tk.LEFT) ### self.frGetCollctnData = tk.Frame(self.mCllctnFrame) # self.frGetListKeys = tk.LabelFrame(self.frGetCollctnData) self._frGetListKeys_ = self.getSubWgts(self.frGetListKeys, tk._dummyFrame) self.frBtGetLstKeys = tk.Frame(self._frGetListKeys_) self.btGetListKeys = tk.Button(self.frBtGetLstKeys, text="Список получ. ключей:") self.varRBtLstKeys = tk.IntVar() self.varRBtLstKeys.set(1) self.rBtLstKeysPrms = tk.Radiobutton(self.frBtGetLstKeys, text = 'Парам. ', variable = self.varRBtLstKeys, value = 1) self.rBtLstKeysLnks = tk.Radiobutton(self.frBtGetLstKeys, text = 'Ссылки', variable = self.varRBtLstKeys, value = 2) self.btGetListKeys.config(relief='groove') self.btGetListKeys.config(command = self.prcdfGetListKeys) self._lbGetListKeys_ = self.getSubWgts(self.frGetListKeys, tk._dummyLabel) self._lbGetListKeys_.config(text = 'Раб. с осн. коллекц.') self.frBtGetLstKeys.pack(side = tk.TOP, anchor = tk.W) self.btGetListKeys.pack(side = tk.LEFT) self.rBtLstKeysPrms.pack(side = tk.TOP, anchor = tk.E) self.rBtLstKeysLnks.pack(side = tk.TOP, anchor = tk.E) self.frGetListKeys.pack(side = tk.TOP, fill = 'x') # self.frGetDictData = tk.Frame(self._frGetListKeys_) self.frGetDictData.config(borderwidth = 2, bg = 'green') ## self.frGetDataDictItem = tk.Frame(self.frGetDictData) self.vlGetDataDictItem = tk.Entry(self.frGetDataDictItem, bg='white') self.vlGetDataDictItem.insert(0, '<знач.ключа>') self.btGetDataDictItem = tk.Button(self.frGetDataDictItem, text="Все знач.\nпо задан. ключу:") self.btGetDataDictItem.config(command = self.prcdGetDataDictItem) self.btGetDataDictItem.config(relief='groove') self.btGetDataDictItem.pack(side= tk.LEFT) self.vlGetDataDictItem.pack(side = tk.RIGHT, fill = 'y') self.frGetDataDictItem.pack(side = tk.TOP) ## self.frGetScrLstByNm = tk.Frame(self.frGetDictData) self.btGetScrLstByNm = tk.Button(self.frGetScrLstByNm, text="Все контрлр.\nпо задан. ключу:") self.btGetScrLstByNm.config(command = self.prcdGetScrLstByNm) self.btGetScrLstByNm.config(relief='groove') self.vlGetScrLstByNm = tk.Entry(self.frGetScrLstByNm, bg='white') self.vlGetScrLstByNm.insert(0, '<знач.ключа>') self.chkBtVar = tk.BooleanVar(self.frGetScrLstByNm) self.chkBtVar.set(False) self.chkGetScrLstByNm = tk.Checkbutton(self.frGetScrLstByNm, text='Вывод сэмплр.', variable=self.chkBtVar) self.btGetScrLstByNm.pack(side= tk.LEFT) self.vlGetScrLstByNm.pack(side = tk.TOP) self.chkGetScrLstByNm.pack(side = tk.LEFT) self.frGetScrLstByNm.pack(side = tk.TOP) ## self.frGetScrFncByKeyVal = tk.Frame(self.frGetDictData) self.btGetScrFncByKeyVal = tk.Button(self.frGetScrFncByKeyVal, text="Все контрлр.\nпо паре кл.-зн.:") self.btGetScrFncByKeyVal.config(command = self.prcdGetScrFncByKeyVal) self.btGetScrFncByKeyVal.config(relief='groove') self.vlGetScrFncByKeyVal = tk.Entry(self.frGetScrFncByKeyVal, bg='white') self.vlGetScrFncByKeyVal.insert(0, '<знач.ключа>') self.vrGetScrFncByKeyVal = tk.Entry(self.frGetScrFncByKeyVal, bg='white') self.vrGetScrFncByKeyVal.insert(0, '<знач.парам.>') self.chkKeyVlVar = tk.BooleanVar(self.frGetScrFncByKeyVal) self.chkKeyVlVar.set(False) self.chkGetScrFncByKeyVal = tk.Checkbutton(self.frGetScrFncByKeyVal, text='Вывод сэмплр.', variable=self.chkKeyVlVar) self.btGetScrFncByKeyVal.pack(side= tk.LEFT, fill='y') self.vlGetScrFncByKeyVal.pack(side = tk.TOP) self.vrGetScrFncByKeyVal.pack(side = tk.TOP) self.chkGetScrFncByKeyVal.pack(side = tk.LEFT) self.frGetScrFncByKeyVal.pack(side = tk.TOP, fill='x') ## self.frGetValByKSF = tk.Frame(self.frGetDictData) self.frGetValByKSF.config(borderwidth = 1, bg = 'red') self.blnMsg = tk.Balloon(self.frGetValByKSF, initwait = 350, bg='yellow') self.blnMsgText = 'Внимание!\nНазвания контроллеров и сэмплеров (возможно) были изменены,\nследует сверять в jmeter по файлу "(*.jmx) униф. эл"' self.blnMsg.bind_widget(self.frGetValByKSF, msg = self.blnMsgText) self.btGetValByKSF = tk.Button(self.frGetValByKSF, text="Значен. для\n кл.-кнтр.-смпл.:") self.btGetValByKSF.config(command = self.prcdGetValByKSF) self.btGetValByKSF.config(relief='groove') self.vlGetValByKSF = tk.Entry(self.frGetValByKSF, bg='white') self.vlGetValByKSF.insert(0, '<знач.ключа>') self.ctGetValByKSF = tk.Entry(self.frGetValByKSF, bg='white') self.ctGetValByKSF.insert(0, '<назв. контрлр.>') self.smGetValByKSF = tk.Entry(self.frGetValByKSF, bg='white') self.smGetValByKSF.insert(0, '<назв. сэмплр.>') self.btGetValByKSF.pack(side= tk.LEFT, fill='y') self.vlGetValByKSF.pack(side = tk.TOP) self.ctGetValByKSF.pack(side = tk.TOP) self.smGetValByKSF.pack(side = tk.TOP) self.frGetValByKSF.pack(side = tk.TOP, fill='x') ## self.frSetValsToSlctn = tk.Frame(self._frGetListKeys_, pady = 2) self.btSetValsToSlctn = tk.Button(self.frSetValsToSlctn, text = 'Установ.\n для дан.\n элемен.\n словар.') self.btSetValsToSlctn.config(command = self.prcdSetValsToSlctn, state = tk.DISABLED, relief = "groove") self.lblSetValsToSlctn = tk.Label(self.frSetValsToSlctn, text = ' <==> ') self.entSetValsToSlctn = tk.Entry(self.frSetValsToSlctn, bg='white') self.entSetValsToSlctn.insert(0, '*новое знач.*') self.btSetValsToSlctn.pack(side = tk.LEFT, anchor=tk.W) self.lblSetValsToSlctn.pack(side = tk.LEFT) self.entSetValsToSlctn.pack(side = tk.RIGHT, anchor=tk.E) ### self.frGetDictData.pack(side = tk.TOP) self.frSetValsToSlctn.pack(side = tk.TOP, anchor = tk.W) # self.frGetCollctnData.pack(side = tk.LEFT) #for lstEntr in self.jmscdObj.entityNames: # self.lstWrkEnts.insert(tk.END, lstEntr) self.fsFrame.pack(side="top", fill='x') self.mCllctnFrame.pack(side=tk.LEFT, fill='x') ##self.loadFrame.pack(side="top", fill='x') self.smplUnqOptFrame.pack(side = tk.RIGHT, anchor = tk.E) self.btnLstFrame.pack(side = tk.RIGHT) self.paramVolatilFrame.pack(side = tk.RIGHT) self.topElemsFrame.pack(side="top", fill='y')
def __init__(self, path="", **options): self.glos = Glossary(ui=self) self.pref = {} self.pref_load(**options) ############################################# rootWin = self.rootWin = tix.Tk() tix.Frame.__init__(self, rootWin) rootWin.title("PyGlossary (Tkinter)") rootWin.resizable(True, False) ######## set_window_icon(rootWin) ######## self.pack(fill="x") # rootWin.bind("<Configure>", self.resized) ###################### self.glos = Glossary(ui=self) self.pref = {} self.pref_load() self.pathI = "" self.pathO = "" self.fcd_dir = join(homeDir, "Desktop") ###################### vpaned = tk.PanedWindow(self, orient=tk.VERTICAL) notebook = tix.NoteBook(vpaned) notebook.add("tab1", label="Convert", underline=0) notebook.add("tab2", label="Reverse", underline=0) convertFrame = tix.Frame(notebook.tab1) ###################### frame = tix.Frame(convertFrame) ## label = tix.Label(frame, text="Read from format") label.pack(side="left") ## comboVar = tk.StringVar() combo = tk.OptionMenu(frame, comboVar, *Glossary.readDesc) # comboVar.set(Glossary.readDesc[0]) comboVar.set(noneItem) combo.pack(side="left") self.combobox_i = comboVar ## frame.pack(fill="x") ################### frame = tix.Frame(convertFrame) ## label = tix.Label(frame, text=" Path:") label.pack(side="left") ## entry = tix.Entry(frame) entry.pack(side="left", fill="x", expand=True) entry.bind_all("<KeyPress>", self.entry_changed) self.entry_i = entry ## button = tix.Button( frame, text="Browse", command=self.browse_i, # bg="#f0f000", # activebackground="#f6f622", ) button.pack(side="left") ## frame.pack(fill="x") ###################### frame = tix.Frame(convertFrame) ## label = tix.Label(frame, text="Write to format ") label.pack(side="left") ## comboVar = tk.StringVar() combo = tk.OptionMenu(frame, comboVar, *Glossary.writeDesc) # comboVar.set(Glossary.writeDesc[0]) comboVar.set(noneItem) combo.pack(side="left") combo.bind("<Configure>", self.combobox_o_changed) self.combobox_o = comboVar ## frame.pack(fill="x") ################### frame = tix.Frame(convertFrame) ## label = tix.Label(frame, text=" Path:") label.pack(side="left") ## entry = tix.Entry(frame) entry.pack(side="left", fill="x", expand=True) # entry.bind_all("<KeyPress>", self.entry_changed) self.entry_o = entry ## button = tix.Button( frame, text="Browse", command=self.browse_o, # bg="#f0f000", # activebackground="#f6f622", ) button.pack(side="left") ## frame.pack(fill="x") ####### frame = tix.Frame(convertFrame) label = tix.Label(frame, text=" " * 15) label.pack( side="left", fill="x", expand=True, ) button = tix.Button( frame, text="Convert", command=self.convert, # bg="#00e000", # activebackground="#22f022", ) button.pack( side="left", fill="x", expand=True, ) ### frame.pack(fill="x") ###### convertFrame.pack(fill="x") vpaned.add(notebook) ################# console = tix.Text(vpaned, height=15, background="#000000") # self.consoleH = 15 # sbar = Tix.Scrollbar( # vpaned, # orien=Tix.VERTICAL, # command=console.yview # ) # sbar.grid ( row=0, column=1) # console["yscrollcommand"] = sbar.set # console.grid() console.pack(fill="both", expand=True) log.addHandler(TkTextLogHandler(console), ) console.insert("end", "Console:\n") #### vpaned.add(console) vpaned.pack(fill="both", expand=True) self.console = console ################## frame2 = tix.Frame(self) clearB = tix.Button( frame2, text="Clear", command=self.console_clear, # bg="black", # fg="#ffff00", # activebackground="#333333", # activeforeground="#ffff00", ) clearB.pack(side="left") #### label = tix.Label(frame2, text="Verbosity") label.pack(side="left") ## comboVar = tk.StringVar() combo = tk.OptionMenu( frame2, comboVar, 0, 1, 2, 3, 4, ) comboVar.set(log.getVerbosity()) comboVar.trace("w", self.verbosityChanged) combo.pack(side="left") self.verbosityCombo = comboVar ##### pbar = ProgressBar(frame2, width=400) pbar.pack(side="left", fill="x", expand=True) self.pbar = pbar frame2.pack(fill="x") self.progressTitle = "" ############# # vpaned.grid() # bottomFrame.grid() # self.grid() ##################### # lbox = Tix.Listbox(convertFrame) # lbox.insert(0, "aaaaaaaa", "bbbbbbbbbbbbbbbbbbbb") # lbox.pack(fill="x") ############## frame3 = tix.Frame(self) aboutB = tix.Button( frame3, text="About", command=self.about_clicked, # bg="#e000e0", # activebackground="#f030f0", ) aboutB.pack(side="right") closeB = tix.Button( frame3, text="Close", command=self.quit, # bg="#ff0000", # activebackground="#ff5050", ) closeB.pack(side="right") frame3.pack(fill="x") # __________________________ Reverse Tab __________________________ # revFrame = tix.Frame(notebook.tab2) revFrame.pack(fill="x") ###################### frame = tix.Frame(revFrame) ## label = tix.Label(frame, text="Read from format") label.pack(side="left") ## comboVar = tk.StringVar() combo = tk.OptionMenu(frame, comboVar, *Glossary.readDesc) # comboVar.set(Glossary.readDesc[0]) comboVar.set(noneItem) combo.pack(side="left") self.combobox_r_i = comboVar ## frame.pack(fill="x") ################### frame = tix.Frame(revFrame) ## label = tix.Label(frame, text=" Path:") label.pack(side="left") ## entry = tix.Entry(frame) entry.pack(side="left", fill="x", expand=True) # entry.bind_all("<KeyPress>", self.entry_r_i_changed) self.entry_r_i = entry ## button = tix.Button( frame, text="Browse", command=self.r_browse_i, # bg="#f0f000", # activebackground="#f6f622", ) button.pack(side="left") ## button = tix.Button( frame, text="Load", command=self.r_load, # bg="#7777ff", ) button.pack(side="left") ### frame.pack(fill="x") ################### frame = tix.Frame(revFrame) ## label = tix.Label(frame, text="Output Tabfile") label.pack(side="left") ### entry = tix.Entry(frame) entry.pack(side="left", fill="x", expand=True) # entry.bind_all("<KeyPress>", self.entry_r_i_changed) self.entry_r_o = entry ## button = tix.Button( frame, text="Browse", command=self.r_browse_o, # bg="#f0f000", # activebackground="#f6f622", ) button.pack(side="left") ## frame.pack(fill="x") ############################## if path: self.entry_i.insert(0, path) self.entry_changed() self.load()
def __init__(self, item, on_item_update, on_item_remove): # make sure only one dialog at a time try: ActionDialog._current_dialog.destroy() except Exception: pass # init self.item = item self.on_item_update = on_item_update self.on_item_remove = on_item_remove # dialog self.dialog = tk.Tk() self.dialog.title("Edit") self.dialog.resizable(width=False, height=False) # labels label_frame = tk.Frame(self.dialog, highlightbackground="gray", highlightcolor="gray", highlightthickness=2) pad = tk.Frame(label_frame, height=8) pad.pack(side=tk.TOP, fill=tk.BOTH, expand=True) # text hash tk.Label(label_frame, text="hash:", anchor=tk.W, font="helvetica 12 bold") \ .pack(side=tk.TOP, fill=tk.BOTH, expand=True) text_hash = tk.Text(label_frame, width=10, height=1, wrap=tk.WORD) text_hash.insert(tk.END, item.entry[:item.entry.find(".")]) text_hash.bind( "<Key>", lambda event: "break" if event.keysym == "Return" else "") text_hash.pack(side=tk.TOP, fill=tk.BOTH, expand=True, padx=8) # text key tk.Label(label_frame, text="key:", anchor=tk.W, font="helvetica 12 bold") \ .pack(side=tk.TOP, fill=tk.BOTH, expand=True) text_key = tk.Text(label_frame, width=80, height=1, wrap=tk.WORD) text_key.insert(tk.END, item.key) text_key.bind( "<Key>", lambda event: "break" if event.keysym == "Return" else "") text_key.pack(side=tk.TOP, fill=tk.BOTH, expand=True, padx=8) # text value tk.Label(label_frame, text="value: ", anchor=tk.W, font="helvetica 12 bold") \ .pack(side=tk.TOP, fill=tk.BOTH, expand=True) text_value = tk.Text(label_frame, width=80, height=5, wrap=tk.WORD) text_value.insert(tk.END, item.value) text_value.bind( "<Key>", lambda event: "break" if event.keysym == "Return" else "") text_value.pack(side=tk.TOP, fill=tk.BOTH, expand=True, padx=8) pad = tk.Frame(label_frame, height=8) pad.pack(side=tk.TOP, fill=tk.BOTH, expand=True) label_frame.pack(side=tk.TOP, fill=tk.BOTH, expand=True) # action buttons btn_frame = tk.Frame(self.dialog) btn = tk.Button(btn_frame, text="Cancel", command=lambda: self.dialog.destroy()) btn.pack(side=tk.LEFT, fill=tk.X, expand=True) btn = tk.Button(btn_frame, text="Remove", command=lambda: self.action_remove(self.item)) btn.pack(side=tk.LEFT, fill=tk.X, expand=True) btn = tk.Button(btn_frame, text="Save", command=lambda: self.action_save( text_hash.get("1.0", tk.END)[:-1], text_key.get("1.0", tk.END)[:-1], text_value.get("1.0", tk.END)[:-1])) btn.pack(side=tk.LEFT, fill=tk.X, expand=True) btn_frame.pack(side=tk.BOTTOM, fill=tk.BOTH, expand=True) ActionDialog._current_dialog = self.dialog
def __init__(self, adapter): # make sure only one dialog at a time try: SearchDialog._current_dialog.destroy() except Exception: pass # init self.adapter = adapter self.last_query_params = ["", ""] self.last_query = {} self.last_query_index = -1 # dialog self.dialog = tk.Tk() self.dialog.title("Search") self.dialog.resizable(width=False, height=False) self.dialog.config(highlightbackground="gray", highlightcolor="gray", highlightthickness=2) self.dialog.protocol("WM_DELETE_WINDOW", self.on_close) # labels label_frame = tk.Frame(self.dialog) # text key tk.Label(label_frame, text="key:", anchor=tk.W, font="helvetica 12 bold") \ .pack(side=tk.TOP, fill=tk.BOTH, expand=True) text_key = tk.Text(label_frame, width=40, height=1, wrap=tk.WORD) text_key.bind( "<Key>", lambda event: "break" if event.keysym == "Return" else "") text_key.pack(side=tk.TOP, fill=tk.BOTH, expand=True, padx=8) # text value tk.Label(label_frame, text="value: ", anchor=tk.W, font="helvetica 12 bold") \ .pack(side=tk.TOP, fill=tk.BOTH, expand=True) text_value = tk.Text(label_frame, width=40, height=1, wrap=tk.WORD) text_value.bind( "<Key>", lambda event: "break" if event.keysym == "Return" else "") text_value.pack(side=tk.TOP, fill=tk.BOTH, expand=True, padx=8) pad = tk.Frame(label_frame, height=14) pad.pack(side=tk.TOP, fill=tk.BOTH, expand=True) label_frame.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) # action buttons btn_frame = tk.Frame(self.dialog) btn_row1_frame = tk.Frame(btn_frame) btn = tk.Button(btn_row1_frame, text="<<<", width=10, command=lambda: self.action_search( text_key.get("1.0", tk.END)[:-1], text_value.get("1.0", tk.END)[:-1], -1)) btn.pack(side=tk.LEFT, fill=tk.X, expand=False, padx=2, pady=2) btn = tk.Button(btn_row1_frame, text=">>>", width=10, command=lambda: self.action_search( text_key.get("1.0", tk.END)[:-1], text_value.get("1.0", tk.END)[:-1], +1)) btn.pack(side=tk.LEFT, fill=tk.X, expand=False, padx=2, pady=2) btn_row1_frame.pack(side=tk.TOP, fill=tk.X, expand=False) btn = tk.Button(btn_frame, text="Count", width=20, command=lambda: self.action_count( text_key.get("1.0", tk.END)[:-1], text_value.get("1.0", tk.END)[:-1])) btn.pack(side=tk.TOP, fill=tk.X, expand=False, padx=2, pady=2) self.found_label = tk.Label(btn_frame) self.found_label.pack(side=tk.TOP, fill=tk.BOTH, expand=True, padx=2, pady=2) btn_frame.pack(side=tk.TOP, fill=tk.BOTH, expand=True, padx=2, pady=2) SearchDialog._current_dialog = self.dialog
def __init__(self): rootWin = self.rootWin = tix.Tk() # a hack that hides the window until we move it to the center of screen if os.sep == "\\": # Windows rootWin.attributes('-alpha', 0.0) else: # Linux rootWin.withdraw() tix.Frame.__init__(self, rootWin) UIBase.__init__(self) rootWin.title("PyGlossary (Tkinter)") rootWin.resizable(True, False) ######## set_window_icon(rootWin) rootWin.bind('<Escape>', lambda e: rootWin.quit()) ######### # Linux: ('clam', 'alt', 'default', 'classic') # Windows: ('winnative', 'clam', 'alt', 'default', 'classic', 'vista', 'xpnative') # style = ttk.Style() # style.theme_use("default") ######## self.pack(fill="x") # rootWin.bind("<Configure>", self.resized) ####################### defaultFont = tkFont.nametofont('TkDefaultFont') if core.sysName in ("linux", "freebsd"): defaultFont.configure(size=int(defaultFont.cget("size") * 1.4)) #### self.biggerFont = defaultFont.copy() self.biggerFont.configure(size=int(defaultFont.cget("size") * 1.8)) ###################### self.glos = Glossary(ui=self) self.glos.config = self.config self._convertOptions = {} self.pathI = "" self.pathO = "" fcd_dir = join(homeDir, "Desktop") if isfile(self.fcd_dir_save_path): try: with open(self.fcd_dir_save_path, encoding="utf-8") as fp: fcd_dir = fp.read().strip("\n") except Exception: log.exception("") self.fcd_dir = fcd_dir ###################### notebook = tix.NoteBook(self) notebook.add("tabConvert", label="Convert", underline=0) # notebook.add("tabReverse", label="Reverse", underline=0) notebook.add("tabAbout", label="About", underline=0) convertFrame = tix.Frame(notebook.tabConvert) aboutFrame = tix.Frame(notebook.tabAbout) ################### row = 0 label = ttk.Label(convertFrame, text="Input File: ") label.grid( row=row, column=0, sticky=tk.W, padx=5, ) ## entry = tix.Entry(convertFrame) entry.grid( row=row, column=1, columnspan=2, sticky=tk.W + tk.E, padx=0, ) entry.bind_all("<KeyPress>", self.anyEntryChanged) self.entryInputConvert = entry ## button = newButton( convertFrame, text="Browse", command=self.browseInputConvert, # bg="#f0f000", # activebackground="#f6f622", borderwidth=3, ) button.grid( row=row, column=3, sticky=tk.W + tk.E, padx=5, ) ###################### row += 1 label = ttk.Label(convertFrame, text="Input Format: ") label.grid( row=row, column=0, sticky=tk.W, padx=5, ) ## self.formatButtonInputConvert = FormatButton( master=convertFrame, descList=readDesc, dialogTitle="Select Input Format", onChange=self.inputFormatChanged, ) self.formatButtonInputConvert.grid( row=row, column=1, columnspan=2, sticky=tk.W, padx=0, ) ## self.readOptions = {} # type: Dict[str, Any] self.writeOptions = {} # type: Dict[str, Any] ## self.readOptionsButton = FormatOptionsButton( "Read", self.readOptions, self.formatButtonInputConvert, master=convertFrame, ) self.inputFormatRow = row ###################### row += 1 label = ttk.Label(convertFrame) label.grid( row=row, column=0, sticky=tk.W, ) ################### row += 1 label = ttk.Label(convertFrame, text="Output File: ") label.grid( row=row, column=0, sticky=tk.W, padx=5, ) ## entry = tix.Entry(convertFrame) entry.grid( row=row, column=1, columnspan=2, sticky=tk.W + tk.E, padx=0, ) entry.bind_all("<KeyPress>", self.anyEntryChanged) self.entryOutputConvert = entry ## button = newButton( convertFrame, text="Browse", command=self.browseOutputConvert, # bg="#f0f000", # activebackground="#f6f622", borderwidth=3, ) button.grid( row=row, column=3, sticky=tk.W + tk.E, padx=5, ) ###################### row += 1 label = ttk.Label(convertFrame, text="Output Format: ") label.grid( row=row, column=0, sticky=tk.W, padx=5, ) ## self.formatButtonOutputConvert = FormatButton( master=convertFrame, descList=writeDesc, dialogTitle="Select Output Format", onChange=self.outputFormatChanged, ) self.formatButtonOutputConvert.grid( row=row, column=1, columnspan=2, sticky=tk.W, padx=0, ) ## self.writeOptionsButton = FormatOptionsButton( "Write", self.writeOptions, self.formatButtonOutputConvert, master=convertFrame, ) self.outputFormatRow = row ################### row += 1 button = newButton( convertFrame, text="Convert", command=self.convert, # background="#00e000", # activebackground="#22f022", borderwidth=7, font=self.biggerFont, padx=5, pady=5, ) button.grid( row=row, column=2, columnspan=3, sticky=tk.W + tk.E + tk.S, padx=5, pady=5, ) # print(f"row number for Convert button: {row}") ###### convertFrame.pack(fill="x") # convertFrame.grid(sticky=tk.W + tk.E + tk.N + tk.S) ################# row += 1 console = tix.Text( convertFrame, height=15, background="#000", foreground="#fff", ) console.bind("<Key>", self.consoleKeyPress) # self.consoleH = 15 # sbar = Tix.Scrollbar( # convertFrame, # orien=Tix.VERTICAL, # command=console.yview # ) # sbar.grid (row=row, column=1) # console["yscrollcommand"] = sbar.set console.grid( row=row, column=0, columnspan=4, sticky=tk.W + tk.E, padx=5, pady=0, ) log.addHandler(TkTextLogHandler(console), ) console.insert("end", "Console:\n") #### self.console = console ################## aboutFrame2 = tix.Frame(aboutFrame) ## label = newLabelWithImage(aboutFrame2, file=logo) label.pack(side="left") ## ## label = ttk.Label(aboutFrame2, text=f"PyGlossary\nVersion {core.VERSION}") label.pack(side="left") ## aboutFrame2.pack(side="top", fill="x") ## style = ttk.Style(self) style.configure("TNotebook", tabposition="wn") # ws => to the left (west) and to the bottom (south) # wn => to the left (west) and at top aboutNotebook = ttk.Notebook(aboutFrame, style="TNotebook") aboutFrame3 = tk.Frame(aboutNotebook) authorsFrame = tk.Frame(aboutNotebook) licenseFrame = tk.Frame(aboutNotebook) # tabImg = tk.PhotoImage(file=join(resDir, "dialog-information-22.png")) # tabImg = tk.PhotoImage(file=join(resDir, "author-22.png")) aboutNotebook.add( aboutFrame3, text="\n About \n", # image=tabImg, # not working # compound=tk.TOP, # padding=50, # not working ) aboutNotebook.add( authorsFrame, text="\nAuthors\n", ) aboutNotebook.add( licenseFrame, text="\nLicense\n", ) label = newReadOnlyText( aboutFrame3, text=f"{aboutText}\nHome page: {core.homePage}", font=("DejaVu Sans", 11, ""), ) label.pack(fill="x") authorsText = "\n".join(authors) authorsText = authorsText.replace("\t", " ") label = newReadOnlyText( authorsFrame, text=authorsText, font=("DejaVu Sans", 11, ""), ) label.pack(fill="x") label = newReadOnlyText( licenseFrame, text=licenseText, font=("DejaVu Sans", 11, ""), ) label.pack(fill="x") aboutNotebook.pack(fill="x") aboutFrame.pack(fill="x") ###################### tk.Grid.columnconfigure(convertFrame, 0, weight=1) tk.Grid.columnconfigure(convertFrame, 1, weight=30) tk.Grid.columnconfigure(convertFrame, 2, weight=20) tk.Grid.columnconfigure(convertFrame, 3, weight=1) tk.Grid.rowconfigure(convertFrame, 0, weight=50) tk.Grid.rowconfigure(convertFrame, 1, weight=50) tk.Grid.rowconfigure(convertFrame, 2, weight=1) tk.Grid.rowconfigure(convertFrame, 3, weight=50) tk.Grid.rowconfigure(convertFrame, 4, weight=50) tk.Grid.rowconfigure(convertFrame, 5, weight=1) tk.Grid.rowconfigure(convertFrame, 6, weight=50) # _________________________________________________________________ # notebook.pack(fill="both", expand=True) # _________________________________________________________________ # statusBarframe = tk.Frame(self, borderwidth=3) clearB = newButton( statusBarframe, text="Clear", command=self.console_clear, # bg="black", # fg="#ffff00", # activebackground="#333333", # activeforeground="#ffff00", borderwidth=3, height=2, ) clearB.pack(side="left") #### label = ttk.Label(statusBarframe, text="Verbosity") label.pack(side="left") ## comboVar = tk.StringVar() combo = ttk.OptionMenu( statusBarframe, comboVar, log.getVerbosity(), # default 0, 1, 2, 3, 4, 5, ) comboVar.trace("w", self.verbosityChanged) combo.pack(side="left") self.verbosityCombo = comboVar ##### pbar = ProgressBar(statusBarframe, width=700, height=28) pbar.pack(side="left", fill="x", expand=True) self.pbar = pbar statusBarframe.pack(fill="x") self.progressTitle = "" # _________________________________________________________________ # centerWindow(rootWin) # show the window if os.sep == "\\": # Windows rootWin.attributes('-alpha', 1.0) else: # Linux rootWin.deiconify()
from tkinter import tix as tkinter from tkinter import ttk root = tkinter.Tk() notebook = ttk.Notebook(root) notebook.pack(expand=True, fill="both", side=tkinter.LEFT) for info in ["Title 1", "Title 2", "Title 3"]: tab = tkinter.Frame() notebook.add(tab, text=info) tkinter.Text(tab).pack() #buttons buttonFrame = tkinter.Frame() buttonFrame.pack(side=tkinter.RIGHT, fill="y") for text in ["thing 1", "thing 2", "thing 3"]: b = tkinter.Button(buttonFrame, text=text) b.pack()
def __init__(self, path="", **options): self.glos = Glossary(ui=self) self.pref = {} self.pref_load(**options) ############################################# rootWin = self.rootWin = tix.Tk() # a hack that hides the window until we move it to the center of screen if os.sep == "\\": # Windows rootWin.attributes('-alpha', 0.0) else: # Linux rootWin.withdraw() tix.Frame.__init__(self, rootWin) rootWin.title("PyGlossary (Tkinter)") rootWin.resizable(True, False) ######## set_window_icon(rootWin) rootWin.bind('<Escape>', lambda e: rootWin.quit()) ######## self.pack(fill="x") # rootWin.bind("<Configure>", self.resized) ###################### self.glos = Glossary(ui=self) self.pref = {} self.pref_load() self.pathI = "" self.pathO = "" fcd_dir = join(homeDir, "Desktop") if isfile(self.fcd_dir_save_path): try: with open(self.fcd_dir_save_path, encoding="utf-8") as fp: fcd_dir = fp.read().strip("\n") except Exception: log.exception("") self.fcd_dir = fcd_dir ###################### notebook = tix.NoteBook(self) notebook.add("tabConvert", label="Convert", underline=0) # notebook.add("tabReverse", label="Reverse", underline=0) notebook.add("tabAbout", label="About", underline=0) convertFrame = tix.Frame(notebook.tabConvert) aboutFrame = tix.Frame(notebook.tabAbout) convertVpaned = ttk.PanedWindow(convertFrame, orient=tk.VERTICAL) ###################### frame = tix.Frame(convertFrame) ## label = ttk.Label(frame, text="Read from format") label.pack(side="left") ## comboVar = tk.StringVar() combo = ttk.OptionMenu( frame, comboVar, None, # default *Glossary.readDesc, ) combo.pack(side="left") comboVar.trace("w", self.inputComboChanged) self.formatVarInputConvert = comboVar ## self.readOptions = {} # type: Dict[str, Any] self.writeOptions = {} # type: Dict[str, Any] ## self.readOptionsButton = FormatOptionsButton( "Read", self.readOptions, self.formatVarInputConvert, master=frame, ) ## frame.pack(fill="x") ################### frame = tix.Frame(convertFrame) ## label = ttk.Label(frame, text=" Path:") label.pack(side="left") ## entry = tix.Entry(frame) entry.pack(side="left", fill="x", expand=True) entry.bind_all("<KeyPress>", self.inputEntryChanged) self.entryInputConvert = entry ## button = ttk.Button( frame, text="Browse", command=self.browseInputConvert, # bg="#f0f000", # activebackground="#f6f622", ) button.pack(side="left") ## frame.pack(fill="x") ###################### frame = tix.Frame(convertFrame) ## label = ttk.Label(frame, text="Write to format ") label.pack(side="left") ## comboVar = tk.StringVar() combo = ttk.OptionMenu( frame, comboVar, None, # default *Glossary.writeDesc, ) combo.pack(side="left") comboVar.trace("w", self.outputComboChanged) self.formatVarOutputConvert = comboVar ## self.writeOptionsButton = FormatOptionsButton( "Write", self.writeOptions, self.formatVarOutputConvert, master=frame, ) ## frame.pack(fill="x") ################### frame = tix.Frame(convertFrame) ## label = ttk.Label(frame, text=" Path:") label.pack(side="left") ## entry = tix.Entry(frame) entry.pack(side="left", fill="x", expand=True) entry.bind_all("<KeyPress>", self.outputEntryChanged) self.entryOutputConvert = entry ## button = ttk.Button( frame, text="Browse", command=self.browseOutputConvert, # bg="#f0f000", # activebackground="#f6f622", ) button.pack(side="left") ## frame.pack(fill="x") ####### frame = tix.Frame(convertFrame) label = ttk.Label(frame, text=" " * 15) label.pack( side="left", fill="x", expand=True, ) button = ttk.Button( frame, text="Convert", command=self.convert, # bg="#00e000", # activebackground="#22f022", ) button.pack( side="left", fill="x", expand=True, ) ### frame.pack(fill="x") convertVpaned.add(frame) ###### convertFrame.pack(fill="x") ################# console = tix.Text(convertVpaned, height=15, background="#000000") # self.consoleH = 15 # sbar = Tix.Scrollbar( # convertVpaned, # orien=Tix.VERTICAL, # command=console.yview # ) # sbar.grid ( row=0, column=1) # console["yscrollcommand"] = sbar.set # console.grid() console.pack(fill="both", expand=True) log.addHandler(TkTextLogHandler(console), ) console.insert("end", "Console:\n") #### convertVpaned.add(console) convertVpaned.pack(fill="both", expand=True) self.console = console ################## # convertVpaned.grid() # bottomFrame.grid() # self.grid() ##################### # lbox = Tix.Listbox(convertFrame) # lbox.insert(0, "aaaaaaaa", "bbbbbbbbbbbbbbbbbbbb") # lbox.pack(fill="x") ############## # __________________________ Reverse Tab __________________________ # # revFrame = tix.Frame(notebook.tabReverse) # revFrame.pack(fill="x") # ###################### # frame = tix.Frame(revFrame) # ## # label = ttk.Label(frame, text="Read from format") # label.pack(side="left") # ## # comboVar = tk.StringVar() # combo = ttk.OptionMenu( # frame, # comboVar, # None, # default # *Glossary.readDesc, # ) # combo.pack(side="left") # self.combobox_r_i = comboVar # ## # frame.pack(fill="x") # ################### # frame = tix.Frame(revFrame) # ## # label = ttk.Label(frame, text=" Path:") # label.pack(side="left") # ## # entry = tix.Entry(frame) # entry.pack(side="left", fill="x", expand=True) # # entry.bind_all("<KeyPress>", self.entry_r_i_changed) # self.entry_r_i = entry # ## # button = ttk.Button( # frame, # text="Browse", # command=self.reverseBrowseInput, # # bg="#f0f000", # # activebackground="#f6f622", # ) # button.pack(side="left") # ## # button = ttk.Button( # frame, # text="Load", # command=self.reverseLoad, # # bg="#7777ff", # ) # button.pack(side="left") # ### # frame.pack(fill="x") # ################### # frame = tix.Frame(revFrame) # ## # label = ttk.Label(frame, text="Output Tabfile") # label.pack(side="left") # ### # entry = tix.Entry(frame) # entry.pack(side="left", fill="x", expand=True) # # entry.bind_all("<KeyPress>", self.entry_r_i_changed) # self.entry_r_o = entry # ## # button = ttk.Button( # frame, # text="Browse", # command=self.reverseBrowseOutput, # # bg="#f0f000", # # activebackground="#f6f622", # ) # button.pack(side="left") # ## # frame.pack(fill="x") # _________________________________________________________________ # aboutFrame2 = tix.Frame(aboutFrame) ## label = newLabelWithImage(aboutFrame2, file=logo) label.pack(side="left") ## ## label = ttk.Label(aboutFrame2, text=f"PyGlossary\nVersion {core.VERSION}") label.pack(side="left") ## aboutFrame2.pack(side="top", fill="x") ## style = ttk.Style(self) style.configure("TNotebook", tabposition="wn") # ws => to the left (west) and to the bottom (south) # wn => to the left (west) and at top aboutNotebook = ttk.Notebook(aboutFrame, style="TNotebook") aboutFrame3 = tk.Frame(aboutNotebook) authorsFrame = tk.Frame(aboutNotebook) licenseFrame = tk.Frame(aboutNotebook) # tabImg = tk.PhotoImage(file=join(resDir, "dialog-information-22.png")) # tabImg = tk.PhotoImage(file=join(resDir, "author-22.png")) aboutNotebook.add( aboutFrame3, text="\n About \n", # image=tabImg, # not working # compound=tk.TOP, # padding=50, # not working ) aboutNotebook.add( authorsFrame, text="\nAuthors\n", ) aboutNotebook.add( licenseFrame, text="\nLicense\n", ) label = newReadOnlyText( aboutFrame3, text=f"{aboutText}\nHome page: {homePage}", font=("DejaVu Sans", 11, ""), ) label.pack(fill="x") authorsText = "\n".join(authors) authorsText = authorsText.replace("\t", " ") label = newReadOnlyText( authorsFrame, text=authorsText, font=("DejaVu Sans", 11, ""), ) label.pack(fill="x") label = newReadOnlyText( licenseFrame, text=licenseText, font=("DejaVu Sans", 11, ""), ) label.pack(fill="x") aboutNotebook.pack(fill="x") aboutFrame.pack(fill="x") # _________________________________________________________________ # notebook.pack(fill="both", expand=True) # _________________________________________________________________ # statusBarframe = tix.Frame(self) clearB = ttk.Button( statusBarframe, text="Clear", command=self.console_clear, # bg="black", # fg="#ffff00", # activebackground="#333333", # activeforeground="#ffff00", ) clearB.pack(side="left") #### label = ttk.Label(statusBarframe, text="Verbosity") label.pack(side="left") ## comboVar = tk.StringVar() combo = ttk.OptionMenu( statusBarframe, comboVar, log.getVerbosity(), # default 0, 1, 2, 3, 4, ) comboVar.trace("w", self.verbosityChanged) combo.pack(side="left") self.verbosityCombo = comboVar ##### pbar = ProgressBar(statusBarframe, width=400) pbar.pack(side="left", fill="x", expand=True) self.pbar = pbar statusBarframe.pack(fill="x") self.progressTitle = "" # _________________________________________________________________ # frame3 = tix.Frame(self) closeB = ttk.Button( frame3, text="Close", command=rootWin.quit, # bg="#ff0000", # activebackground="#ff5050", ) closeB.pack(side="right") frame3.pack(fill="x") # _________________________________________________________________ # centerWindow(rootWin) # show the window if os.sep == "\\": # Windows rootWin.attributes('-alpha', 1.0) else: # Linux rootWin.deiconify() if path: self.entryInputConvert.insert(0, path) self.inputEntryChanged() self.outputEntryChanged() self.load()
def __init__(self, path='', **options): self.running = False self.glos = Glossary(ui=self) self.pref = {} self.pref_load(**options) ############################################# master = tix.Tk() tix.Frame.__init__(self, master) master.title('PyGlossary (Tkinter)') master.resizable(True, False) ######## #icon = Tix.BitmapImage(file=xbmLogo) #master.wm_iconbitmap(icon) #master.wm_iconbitmap(xbmLogo) #bit = Tix.PhotoImage(file=join(uiDir, 'pyglossary.gif'), format='gif') #lb = Tix.Label(None,image=bit) #lb.grid() #master.iconwindow(icon, 'pyglossary') #master.wm_iconimage(bit) #master.wm_iconname('dot') #help(master.wm_iconbitmap) #for x in dir(master): # if 'wm_' in x: # log.debug(x) master.wm_iconbitmap('@%s' % xbmLogo) ######## self.pack(fill='x') #master.bind('<Configure>', self.resized) ###################### self.running = False self.glos = Glossary(ui=self) self.pref = {} self.pref_load() self.pathI = '' self.pathO = '' self.fcd_dir = join(homeDir, 'Desktop') ###################### vpaned = tk.PanedWindow(self, orient=tk.VERTICAL) notebook = tix.NoteBook(vpaned) notebook.add('tab1', label='Convert', underline=0) notebook.add('tab2', label='Reverse', underline=0) convertFrame = tix.Frame(notebook.tab1) ###################### frame = tix.Frame(convertFrame) ## label = tix.Label(frame, text='Read from format') label.pack(side='left') ## comboVar = tk.StringVar() combo = tk.OptionMenu(frame, comboVar, *Glossary.readDesc) #comboVar.set(Glossary.readDesc[0]) comboVar.set(noneItem) combo.pack(side='left') self.combobox_i = comboVar ## frame.pack(fill='x') ################### frame = tix.Frame(convertFrame) ## label = tix.Label(frame, text=' Path:') label.pack(side='left') ## entry = tix.Entry(frame) entry.pack(side='left', fill='x', expand=True) entry.bind_all('<KeyPress>', self.entry_changed) self.entry_i = entry ## button = tix.Button( frame, text='Browse', command=self.browse_i, #bg='#f0f000', #activebackground='#f6f622', ) button.pack(side='left') ## frame.pack(fill='x') ###################### frame = tix.Frame(convertFrame) ## label = tix.Label(frame, text='Write to format ') label.pack(side='left') ## comboVar = tk.StringVar() combo = tk.OptionMenu(frame, comboVar, *Glossary.writeDesc) #comboVar.set(Glossary.writeDesc[0]) comboVar.set(noneItem) combo.pack(side='left') combo.bind('<Configure>', self.combobox_o_changed) self.combobox_o = comboVar ## frame.pack(fill='x') ################### frame = tix.Frame(convertFrame) ## label = tix.Label(frame, text=' Path:') label.pack(side='left') ## entry = tix.Entry(frame) entry.pack(side='left', fill='x', expand=True) #entry.bind_all('<KeyPress>', self.entry_changed) self.entry_o = entry ## button = tix.Button( frame, text='Browse', command=self.browse_o, #bg='#f0f000', #activebackground='#f6f622', ) button.pack(side='left') ## frame.pack(fill='x') ####### frame = tix.Frame(convertFrame) label = tix.Label(frame, text=' ' * 15) label.pack( side='left', fill='x', expand=True, ) button = tix.Button( frame, text='Convert', command=self.convert, #bg='#00e000', #activebackground='#22f022', ) button.pack( side='left', fill='x', expand=True, ) ### frame.pack(fill='x') ###### convertFrame.pack(fill='x') vpaned.add(notebook) ################# console = tix.Text(vpaned, height=15, background='#000000') #self.consoleH = 15 #sbar = Tix.Scrollbar(vpaned, orien=Tix.VERTICAL, command=console.yview) #sbar.grid ( row=0, column=1) #console['yscrollcommand'] = sbar.set #console.grid() console.pack(fill='both', expand=True) log.addHandler(TkTextLogHandler(console), ) console.insert('end', 'Console:\n') #### vpaned.add(console) vpaned.pack(fill='both', expand=True) self.console = console ################## frame2 = tix.Frame(self) clearB = tix.Button( frame2, text='Clear', command=self.console_clear, #bg='black', #fg='#ffff00', #activebackground='#333333', #activeforeground='#ffff00', ) clearB.pack(side='left') #### label = tix.Label(frame2, text='Verbosity') label.pack(side='left') ## comboVar = tk.StringVar() combo = tk.OptionMenu( frame2, comboVar, 0, 1, 2, 3, 4, ) comboVar.set(log.getVerbosity()) comboVar.trace('w', self.verbosityChanged) combo.pack(side='left') self.verbosityCombo = comboVar ##### pbar = ProgressBar(frame2, width=400) pbar.pack(side='left', fill='x', expand=True) self.pbar = pbar frame2.pack(fill='x') self.progressTitle = '' ############# #vpaned.grid() #bottomFrame.grid() #self.grid() ##################### #lbox = Tix.Listbox(convertFrame) #lbox.insert(0, 'aaaaaaaa', 'bbbbbbbbbbbbbbbbbbbb') #lbox.pack(fill='x') ############## frame3 = tix.Frame(self) aboutB = tix.Button( frame3, text='About', command=self.about_clicked, #bg='#e000e0', #activebackground='#f030f0', ) aboutB.pack(side='right') closeB = tix.Button( frame3, text='Close', command=self.quit, #bg='#ff0000', #activebackground='#ff5050', ) closeB.pack(side='right') frame3.pack(fill='x') ############### Reverse Tab #################### revFrame = tix.Frame(notebook.tab2) revFrame.pack(fill='x') ###################### frame = tix.Frame(revFrame) ## label = tix.Label(frame, text='Read from format') label.pack(side='left') ## comboVar = tk.StringVar() combo = tk.OptionMenu(frame, comboVar, *Glossary.readDesc) #comboVar.set(Glossary.readDesc[0]) comboVar.set(noneItem) combo.pack(side='left') self.combobox_r_i = comboVar ## frame.pack(fill='x') ################### frame = tix.Frame(revFrame) ## label = tix.Label(frame, text=' Path:') label.pack(side='left') ## entry = tix.Entry(frame) entry.pack(side='left', fill='x', expand=True) #entry.bind_all('<KeyPress>', self.entry_r_i_changed) self.entry_r_i = entry ## button = tix.Button( frame, text='Browse', command=self.r_browse_i, #bg='#f0f000', #activebackground='#f6f622', ) button.pack(side='left') ## button = tix.Button( frame, text='Load', command=self.r_load, #bg='#7777ff', ) button.pack(side='left') ### frame.pack(fill='x') ################### frame = tix.Frame(revFrame) ## label = tix.Label(frame, text='Output Tabfile') label.pack(side='left') ### entry = tix.Entry(frame) entry.pack(side='left', fill='x', expand=True) #entry.bind_all('<KeyPress>', self.entry_r_i_changed) self.entry_r_o = entry ## button = tix.Button( frame, text='Browse', command=self.r_browse_o, #bg='#f0f000', #activebackground='#f6f622', ) button.pack(side='left') ## frame.pack(fill='x') ############################## if path != '': self.entry_i.insert(0, path) self.entry_changed() self.load()
def __init__(self, path="", **options): self.glos = Glossary(ui=self) self.pref = {} self.pref_load(**options) ############################################# rootWin = self.rootWin = tix.Tk() # a hack that hides the window until we move it to the center of screen if os.sep == "\\": # Windows rootWin.attributes('-alpha', 0.0) else: # Linux rootWin.withdraw() tix.Frame.__init__(self, rootWin) rootWin.title("PyGlossary (Tkinter)") rootWin.resizable(True, False) ######## set_window_icon(rootWin) rootWin.bind('<Escape>', lambda e: rootWin.quit()) ######## self.pack(fill="x") # rootWin.bind("<Configure>", self.resized) ###################### self.glos = Glossary(ui=self) self.pref = {} self.pref_load() self.pathI = "" self.pathO = "" fcd_dir = join(homeDir, "Desktop") if isfile(self.fcd_dir_save_path): try: with open(self.fcd_dir_save_path, encoding="utf-8") as fp: fcd_dir = fp.read().strip("\n") except Exception: log.exception("") self.fcd_dir = fcd_dir ###################### vpaned = ttk.PanedWindow(self, orient=tk.VERTICAL) notebook = tix.NoteBook(vpaned) notebook.add("tabConvert", label="Convert", underline=0) # notebook.add("tabReverse", label="Reverse", underline=0) convertFrame = tix.Frame(notebook.tabConvert) ###################### frame = tix.Frame(convertFrame) ## label = ttk.Label(frame, text="Read from format") label.pack(side="left") ## comboVar = tk.StringVar() combo = ttk.OptionMenu( frame, comboVar, None, # default *Glossary.readDesc, ) combo.pack(side="left") comboVar.trace("w", self.inputComboChanged) self.formatVarInputConvert = comboVar ## self.readOptions = {} # type: Dict[str, Any] self.writeOptions = {} # type: Dict[str, Any] ## self.readOptionsButton = FormatOptionsButton( "Read", self.readOptions, self.formatVarInputConvert, master=frame, ) ## frame.pack(fill="x") ################### frame = tix.Frame(convertFrame) ## label = ttk.Label(frame, text=" Path:") label.pack(side="left") ## entry = tix.Entry(frame) entry.pack(side="left", fill="x", expand=True) entry.bind_all("<KeyPress>", self.inputEntryChanged) self.entryInputConvert = entry ## button = ttk.Button( frame, text="Browse", command=self.browseInputConvert, # bg="#f0f000", # activebackground="#f6f622", ) button.pack(side="left") ## frame.pack(fill="x") ###################### frame = tix.Frame(convertFrame) ## label = ttk.Label(frame, text="Write to format ") label.pack(side="left") ## comboVar = tk.StringVar() combo = ttk.OptionMenu( frame, comboVar, None, # default *Glossary.writeDesc, ) combo.pack(side="left") comboVar.trace("w", self.outputComboChanged) self.formatVarOutputConvert = comboVar ## self.writeOptionsButton = FormatOptionsButton( "Write", self.writeOptions, self.formatVarOutputConvert, master=frame, ) ## frame.pack(fill="x") ################### frame = tix.Frame(convertFrame) ## label = ttk.Label(frame, text=" Path:") label.pack(side="left") ## entry = tix.Entry(frame) entry.pack(side="left", fill="x", expand=True) entry.bind_all("<KeyPress>", self.outputEntryChanged) self.entryOutputConvert = entry ## button = ttk.Button( frame, text="Browse", command=self.browseOutputConvert, # bg="#f0f000", # activebackground="#f6f622", ) button.pack(side="left") ## frame.pack(fill="x") ####### frame = tix.Frame(convertFrame) label = ttk.Label(frame, text=" " * 15) label.pack( side="left", fill="x", expand=True, ) button = ttk.Button( frame, text="Convert", command=self.convert, # bg="#00e000", # activebackground="#22f022", ) button.pack( side="left", fill="x", expand=True, ) ### frame.pack(fill="x") ###### convertFrame.pack(fill="x") vpaned.add(notebook) ################# console = tix.Text(vpaned, height=15, background="#000000") # self.consoleH = 15 # sbar = Tix.Scrollbar( # vpaned, # orien=Tix.VERTICAL, # command=console.yview # ) # sbar.grid ( row=0, column=1) # console["yscrollcommand"] = sbar.set # console.grid() console.pack(fill="both", expand=True) log.addHandler(TkTextLogHandler(console), ) console.insert("end", "Console:\n") #### vpaned.add(console) vpaned.pack(fill="both", expand=True) self.console = console ################## frame2 = tix.Frame(self) clearB = ttk.Button( frame2, text="Clear", command=self.console_clear, # bg="black", # fg="#ffff00", # activebackground="#333333", # activeforeground="#ffff00", ) clearB.pack(side="left") #### label = ttk.Label(frame2, text="Verbosity") label.pack(side="left") ## comboVar = tk.StringVar() combo = ttk.OptionMenu( frame2, comboVar, log.getVerbosity(), # default 0, 1, 2, 3, 4, ) comboVar.trace("w", self.verbosityChanged) combo.pack(side="left") self.verbosityCombo = comboVar ##### pbar = ProgressBar(frame2, width=400) pbar.pack(side="left", fill="x", expand=True) self.pbar = pbar frame2.pack(fill="x") self.progressTitle = "" ############# # vpaned.grid() # bottomFrame.grid() # self.grid() ##################### # lbox = Tix.Listbox(convertFrame) # lbox.insert(0, "aaaaaaaa", "bbbbbbbbbbbbbbbbbbbb") # lbox.pack(fill="x") ############## frame3 = tix.Frame(self) aboutB = ttk.Button( frame3, text="About", command=self.about_clicked, # bg="#e000e0", # activebackground="#f030f0", ) aboutB.pack(side="right") closeB = ttk.Button( frame3, text="Close", command=rootWin.quit, # bg="#ff0000", # activebackground="#ff5050", ) closeB.pack(side="right") frame3.pack(fill="x") # __________________________ Reverse Tab __________________________ # # revFrame = tix.Frame(notebook.tabReverse) # revFrame.pack(fill="x") # ###################### # frame = tix.Frame(revFrame) # ## # label = ttk.Label(frame, text="Read from format") # label.pack(side="left") # ## # comboVar = tk.StringVar() # combo = ttk.OptionMenu( # frame, # comboVar, # None, # default # *Glossary.readDesc, # ) # combo.pack(side="left") # self.combobox_r_i = comboVar # ## # frame.pack(fill="x") # ################### # frame = tix.Frame(revFrame) # ## # label = ttk.Label(frame, text=" Path:") # label.pack(side="left") # ## # entry = tix.Entry(frame) # entry.pack(side="left", fill="x", expand=True) # # entry.bind_all("<KeyPress>", self.entry_r_i_changed) # self.entry_r_i = entry # ## # button = ttk.Button( # frame, # text="Browse", # command=self.reverseBrowseInput, # # bg="#f0f000", # # activebackground="#f6f622", # ) # button.pack(side="left") # ## # button = ttk.Button( # frame, # text="Load", # command=self.reverseLoad, # # bg="#7777ff", # ) # button.pack(side="left") # ### # frame.pack(fill="x") # ################### # frame = tix.Frame(revFrame) # ## # label = ttk.Label(frame, text="Output Tabfile") # label.pack(side="left") # ### # entry = tix.Entry(frame) # entry.pack(side="left", fill="x", expand=True) # # entry.bind_all("<KeyPress>", self.entry_r_i_changed) # self.entry_r_o = entry # ## # button = ttk.Button( # frame, # text="Browse", # command=self.reverseBrowseOutput, # # bg="#f0f000", # # activebackground="#f6f622", # ) # button.pack(side="left") # ## # frame.pack(fill="x") # _________________________________________________________________ # centerWindow(rootWin) # show the window if os.sep == "\\": # Windows rootWin.attributes('-alpha', 1.0) else: # Linux rootWin.deiconify() if path: self.entryInputConvert.insert(0, path) self.inputEntryChanged() self.outputEntryChanged() self.load()