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 __init__(self, base_root=None): self.root = tk.Toplevel(base_root) self.root.transient(base_root) self.root.minsize(400, 50) self.root.resizable(0, 0) self.all_file_types = [('图片文件', ('.png', '.jpg', '.jpeg'))] self.root.title('文字识别') self.Frame = tk.Frame(self.root) self.scrollbar = tk.Scrollbar(self.root, orient=tk.HORIZONTAL) self.LabelFrame = ttk.LabelFrame(self.root, text='文件目录: ') self.Entry = ttk.Entry(self.LabelFrame, xscrollcommand=self.scrollbar.set) self.scrollbar.config(command=self.Entry.xview) self.Entry.config(state=tk.DISABLED) self.Button = ttk.Button(self.Frame, text='选择文件', command=self.askfile) self.submmitButton = ttk.Button( self.Frame, text='识别', command=lambda: self.ok(self.Entry.get()))
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, parent, canv_w=400, canv_h=400, expand=False, fill=None, height=None, width=None, *args, scrollcommand=lambda: None, **kwargs): """Parent = master of scrolled window canv_w - width of canvas canv_h - height of canvas """ super().__init__(parent, *args, **kwargs) self.parent = parent self.scrollCommand = scrollcommand # creating a scrollbars if width is None: __width = 0 else: __width = width if height is None: __height = 0 else: __height = width self.canv = tk.Canvas(self.parent, bg='#FFFFFF', width=canv_w, height=canv_h, scrollregion=(0, 0, __width, __height), highlightthickness=0) # self.hbar = Scrollbar(self.parent, orient=HORIZONTAL) # self.hbar.pack(side=BOTTOM, fill=X) # self.hbar.config(command=self.canv.xview) self.vbar = tix.Scrollbar(self.parent, orient=tk.VERTICAL, background="#3f3f3f", activebackground="#FFD800") self.vbar.pack(side=tk.RIGHT, fill=tk.Y) self.vbar.config(command=self.canv.yview) self.canv.config( # xscrollcommand=self.hbar.set, yscrollcommand=self.vbar.set) self.canv.pack(side=tk.LEFT, fill=fill, expand=expand) # creating a canvas # self.canv = tk.Canvas(self.parent, width=canv_w, height=canv_h) # self.canv.config(relief='flat', # width=canv_w, # heigh=canv_h, bd=2) # placing a canvas into frame # self.canv.grid(column=0, row=0, sticky='nsew') # accociating scrollbar comands to canvas scroling # self.hbar.config(command=self.canv.xview) self.vbar.config(command=self.canv.yview) # creating a frame to inserto to canvas self.scrollwindow = tk.Frame(self.parent, height=height, width=width) self.canv.create_window(0, 0, window=self.scrollwindow, anchor='nw', height=height, width=width) self.canv.config( # xscrollcommand=self.hbar.set, yscrollcommand=self.vbar.set, scrollregion=(0, 0, canv_h, canv_w)) # self.vbar.lift(self.scrollwindow) # self.hbar.lift(self.scrollwindow) self.scrollwindow.bind('<Configure>', self._configure_window) self.scrollwindow.bind('<Enter>', self._bound_to_mousewheel) self.scrollwindow.bind('<Leave>', self._unbound_to_mousewheel) return
def mon_rec(self): def bind_x(*args): f.update_idletasks() canvas1.xview(*args) canvas2.xview(*args) def OnMouseWheel(event): canvas2.yview_scroll(int(-1 * (event.delta / 120)), "units") return "break" def cur_enter(ev, t1, t2, t3, t4, t5): t1.config(fg='red') t2.config(fg='red') t3.config(foreground='red') t4.config(fg='red') for i in range(len(t5)): t5[i].config(fg='red') def cur_leave(ev, t1, t2, t3, t4, t5): t1.config(fg='black') t2.config(fg='black') t3.config(foreground='black') t4.config(fg='black') for i in range(len(t5)): t5[i].config(fg='black') data = teachers.lec() if data is []: for _ in data: if _[0] == self.user: c = _[1].split(',') c.sort() break else: pass else: c = ["CSE", "ECE", "ELECTRICAL", "CIVIL", "MECHANICAL"] c.sort() n2 = ttk.Notebook(self.f2) n2.pack(fill='both', expand=True) for i in range(0, len(c)): f = ttk.Frame(n2, width=1150, height=10) n2.add(f, text=' ' + c[i] + ' ') frame1 = ttk.Frame(f) frame1.pack(side='top', fill='x') frame2 = ttk.Frame(f) frame2.pack(fill='both', expand=True) canvas1 = tkinter.Canvas(frame1, height=40) canvas2 = tkinter.Canvas(frame2) scrolly = tix.Scrollbar(frame2, command=canvas2.yview, orient='vertical') scrollx = tix.Scrollbar(f, command=bind_x, orient='horizontal') scrolly.pack(side='right', fill='y') scrollx.pack(side='bottom', fill='x') canvas1.pack(side='top', fill='x', expand=True) canvas2.pack(side='left', fill='both', expand=True) f.bind_all("<MouseWheel>", OnMouseWheel) f1 = tkinter.Frame(canvas1) f2 = tkinter.Frame(canvas2) ttk.Label(f1, text='S.No.', font=('times', 14)).grid(row=0, column=0, padx=30) ttk.Label(f1, text='Roll No.', font=('times', 14)).grid(row=0, column=1, padx=33) ttk.Label(f1, text='Name', font=('times', 14)).grid(row=0, column=2, padx=54) for j in range(0, 10): ttk.Label(f1, text=j + 1, font=('times', 14)).grid(row=0, column=4 + j, padx=4) for j in range(10, 30): ttk.Label(f1, text=j + 1, font=('times', 14)).grid(row=0, column=4 + j, padx=1) ttk.Label(f1, text='Total', font=('times', 14)).grid(row=0, column=j + 5, padx=10) '''e = tix.Entry(f2) e.insert(0, '01/01/2018') e.grid(row=0, column=3, padx=80, pady=20)''' for j in range(0, 50): t1 = tkinter.Label(f2, text=j + 1, font=('helvatica', 12)) t1.grid(row=j + 3, column=0, padx=40) t2 = tkinter.Label(f2, text='181' + str(j), font=('helvatica', 12)) t2.grid(row=j + 3, column=1, padx=40) t3 = ttk.Label(f2, text='Student-' + str(j + 1), font=('helvatica', 12), wraplength=100) t3.grid(row=j + 3, column=2, columnspan=2, padx=40) t4 = tkinter.Label(f2, text=' ' + str(random.randrange(10)) + '/10 ', font=('helvatica', 12)) t4.grid(row=j + 3, column=35) t5 = [] for k in range(0, 10): t = tkinter.Label(f2, text=str(random.choice(['A', 'P'])), font=('helvatica', 12)) t.grid(row=j + 3, column=k + 4, padx=2, sticky='W') t5.append(t) t.bind('<Enter>', lambda ev, t1=t1, t2=t2, t3=t3, t4=t4, t5=t5: cur_enter(ev, t1, t2, t3, t4, t5)) t.bind('<Leave>', lambda ev, t1=t1, t2=t2, t3=t3, t4=t4, t5=t5: cur_leave(ev, t1, t2, t3, t4, t5)) tkinter.Label(f2).grid(row=j + 3, column=k + 5) for k in range(11, 21): t = tkinter.Label(f2, text=str(random.choice(['A', 'P'])), font=('helvatica', 12)) t.grid(row=j + 3, column=k + 4, padx=4, sticky='W') t5.append(t) t.bind('<Enter>', lambda ev, t1=t1, t2=t2, t3=t3, t4=t4, t5=t5: cur_enter(ev, t1, t2, t3, t4, t5)) t.bind('<Leave>', lambda ev, t1=t1, t2=t2, t3=t3, t4=t4, t5=t5: cur_leave(ev, t1, t2, t3, t4, t5)) for k in range(21, 31): t = tkinter.Label(f2, text=str(random.choice(['A', 'P'])), font=('helvatica', 12)) t.grid(row=j + 3, column=k + 4, padx=3, sticky='W') t5.append(t) t.bind('<Enter>', lambda ev, t1=t1, t2=t2, t3=t3, t4=t4, t5=t5: cur_enter(ev, t1, t2, t3, t4, t5)) t.bind('<Leave>', lambda ev, t1=t1, t2=t2, t3=t3, t4=t4, t5=t5: cur_leave(ev, t1, t2, t3, t4, t5)) t1.bind('<Enter>', lambda ev, t1=t1, t2=t2, t3=t3, t4=t4, t5=t5: cur_enter(ev, t1, t2, t3, t4, t5)) t2.bind('<Enter>', lambda ev, t1=t1, t2=t2, t3=t3, t4=t4, t5=t5: cur_enter(ev, t1, t2, t3, t4, t5)) t3.bind('<Enter>', lambda ev, t1=t1, t2=t2, t3=t3, t4=t4, t5=t5: cur_enter(ev, t1, t2, t3, t4, t5)) t4.bind('<Enter>', lambda ev, t1=t1, t2=t2, t3=t3, t4=t4, t5=t5: cur_enter(ev, t1, t2, t3, t4, t5)) t1.bind('<Leave>', lambda ev, t1=t1, t2=t2, t3=t3, t4=t4, t5=t5: cur_leave(ev, t1, t2, t3, t4, t5)) t2.bind('<Leave>', lambda ev, t1=t1, t2=t2, t3=t3, t4=t4, t5=t5: cur_leave(ev, t1, t2, t3, t4, t5)) t3.bind('<Leave>', lambda ev, t1=t1, t2=t2, t3=t3, t4=t4, t5=t5: cur_leave(ev, t1, t2, t3, t4, t5)) t4.bind('<Leave>', lambda ev, t1=t1, t2=t2, t3=t3, t4=t4, t5=t5: cur_leave(ev, t1, t2, t3, t4, t5)) '''for k in range(3, 200): tix.Label(f2, text=k).grid(row=1, column=k)''' canvas1.create_window(0, 0, window=f1) canvas2.create_window(0, 0, window=f2) f1.update_idletasks() canvas1.itemconfigure("frame") f2.update_idletasks() canvas2.itemconfigure("frame") canvas1.config(scrollregion=canvas1.bbox("all")) canvas1.config(xscrollcommand=scrollx.set) canvas2.config(scrollregion=canvas2.bbox("all")) canvas2.config(yscrollcommand=scrolly.set) canvas2.config(xscrollcommand=scrollx.set)
def daily_rec(self): def cal(c): import sys import calendar root = tkinter.Toplevel() root.title('Ttk Calendar') root.grab_set() w = c.winfo_reqheight() h = c.winfo_reqheight() print(w, h) root.geometry('+%d+%d' % (w, h)) tkinter.Label(root, text='NEW').pack() root.mainloop() def check(): for e, i in enumerate(v1): if i.get() == 1: for j in v2[e]: j.set(1) else: for j in v2[e]: j.set(0) def cur_enter(ev, t1, t2, t3, t4): t1.config(fg='red') t2.config(fg='red') t4.config(fg='red') t3.config(foreground='red') def cur_leave(ev, t1, t2, t3, t4): t1.config(fg='black') t2.config(fg='black') t4.config(fg='black') t3.config(foreground='black') def log_out(): m = messagebox.askyesno('Alert', 'Do you want to Log Out ?') if m: l.log(self.n1) frame = tkinter.Frame(self.f1) frame.pack(pady=20, fill='x', expand=True) back = ttk.Button(frame, text='<- Log Out', command=log_out) back.grid(padx=20) f = ttk.Frame(frame) f.grid(row=0, column=1, padx=400) ttk.Label(f, text='Date : ', font=(14)).grid(row=0, column=0) e = ttk.Entry(f, font=(14), width=9) e.grid(row=0, column=1) e.insert(0, time.strftime('%d/%m/%Y')) #e.config(state='disable') '''c = ttk.Button(f, text='Calender') c.config(command=lambda c=c: cal(c)) c.grid(row=0, column=2, padx=5)''' submit = ttk.Button(f, text="Submit ->") submit.grid(row=0, column=3, padx=435) data = teachers.lec() if data is []: for _ in data: if _[0] == self.user: c = _[1].split(',') c.sort() break else: pass else: c = ["CSE", "ECE", "ELECTRICAL", "CIVIL", "MECHANICAL"] c.sort() n2 = ttk.Notebook(self.f1, width=1200, height=600) n2.pack(fill='both', expand=True) v1 = [] v2 = [] for i in range(0, len(c)): f = ttk.Frame(n2) n2.add(f, text=' ' + c[i] + ' ') canvas1 = tkinter.Canvas(f) scrolly = tix.Scrollbar(f, command=canvas1.yview, orient='vertical') canvas1.pack(side='left', fill='both', expand=True) scrolly.pack(side='right', fill='y') f2 = tkinter.Frame(canvas1, width=1100, height=550) ttk.Label(f2, text='S.No.', font=('times', 14)).grid(row=0, column=0, padx=80, pady=20) ttk.Label(f2, text='Roll No.', font=('times', 14)).grid(row=0, column=1, padx=80, pady=20) ttk.Label(f2, text='Name', font=('times', 14)).grid(row=0, column=2, padx=80, pady=20) ttk.Label(f2, text='Total Attended', font=('times', 14)).grid(row=0, column=4, padx=80, pady=20) '''e = tix.Entry(f2) e.insert(0, '01/01/2018') e.grid(row=0, column=3, padx=80, pady=20)''' v11 = tkinter.Variable() v11.set(0) v1.append(v11) v21 = [] v2.append(v21) for j in range(0, 50): v21.append(tkinter.Variable()) v21[j].set(0) t1 = tkinter.Label(f2, text=j + 1, font=('helvatica', 12)) t1.grid(row=j + 3, column=0, padx=20) t2 = tkinter.Label(f2, text='181' + str(j), font=('helvatica', 12)) t2.grid(row=j + 3, column=1, padx=70) t3 = ttk.Label(f2, text='Student-' + str(j + 1), font=('helvatica', 12), wraplength=100) t3.grid(row=j + 3, column=2, columnspan=2, padx=70) t4 = tkinter.Label(f2, text=str(random.randrange(10)) + '/10', font=('helvatica', 12)) t4.grid(row=j + 3, column=4) t5 = tix.Checkbutton(f2, onvalue=1, offvalue=0, variable=v21[j], font=('helvatica', 20)) t5.grid(row=j + 3, column=5, padx=70) t1.bind('<Enter>', lambda ev, t1=t1, t2=t2, t3=t3, t4=t4: cur_enter( ev, t1, t2, t3, t4)) t2.bind('<Enter>', lambda ev, t1=t1, t2=t2, t3=t3, t4=t4: cur_enter( ev, t1, t2, t3, t4)) t3.bind('<Enter>', lambda ev, t1=t1, t2=t2, t3=t3, t4=t4: cur_enter( ev, t1, t2, t3, t4)) t4.bind('<Enter>', lambda ev, t1=t1, t2=t2, t3=t3, t4=t4: cur_enter( ev, t1, t2, t3, t4)) t5.bind('<Enter>', lambda ev, t1=t1, t2=t2, t3=t3, t4=t4: cur_enter( ev, t1, t2, t3, t4)) t1.bind('<Leave>', lambda ev, t1=t1, t2=t2, t3=t3, t4=t4: cur_leave( ev, t1, t2, t3, t4)) t2.bind('<Leave>', lambda ev, t1=t1, t2=t2, t3=t3, t4=t4: cur_leave( ev, t1, t2, t3, t4)) t3.bind('<Leave>', lambda ev, t1=t1, t2=t2, t3=t3, t4=t4: cur_leave( ev, t1, t2, t3, t4)) t4.bind('<Leave>', lambda ev, t1=t1, t2=t2, t3=t3, t4=t4: cur_leave( ev, t1, t2, t3, t4)) t5.bind('<Leave>', lambda ev, t1=t1, t2=t2, t3=t3, t4=t4: cur_leave( ev, t1, t2, t3, t4)) '''for k in range(3, 200): tix.Label(f2, text=k).grid(row=1, column=k)''' tix.Checkbutton(f2, text='All', onvalue=1, offvalue=0, variable=v11, command=check).grid(row=0, column=5) canvas1.create_window(0, 0, window=f2) f2.update_idletasks() canvas1.itemconfigure("frame") canvas1.config(scrollregion=canvas1.bbox("all")) canvas1.config(yscrollcommand=scrolly.set)