📄 textstat.pyw
字号:
optFrame3.pack(fill=X, padx=5) self.maxFreq = StringVar() self.maxFreq.set(cfg['freqMax']) Spinbox(optFrame3, width=5, textvariable=self.maxFreq, values=('---',1,2,3,4,5,10,25,50,100,250,500,750,1000,2500,5000,10000)).pack(side=LEFT, anchor=W) Label(optFrame3, text=s['FTmaxFreq']).pack(side=LEFT, padx=5) self.grosskleinFreq = IntVar() Checkbutton(optFrame, text=s['FTignGross'], variable=self.grosskleinFreq).pack(pady=10, anchor=W) self.suchFreq = StringVar() Label(optFrame, text=s['FTsuchFreq'], justify=LEFT).pack(anchor=W, padx=5) self.suchFreqEntry = Entry(optFrame, textvariable=self.suchFreq) self.suchFreqEntry.pack(anchor=W, padx=5) self.suchFreqEntry.bind('<Return>', self.zeigWortfrequenz) Button(optFrame, text=s['FTfreqliste'], command=self.zeigWortfrequenz).pack(anchor=W, padx=5, pady=10) def FormenTabPopup(self, event): self.FormenPopupMenu = Menu(self.root, tearoff=0) self.FormenPopupMenu.add_command(label=s['FTkopieren'], command=self.copy2clipboard) self.FormenPopupMenu.add_command(label=s['FTsuchKonk'], command=self.zeigKonkordanz) self.FormenPopupMenu.add_command(label=s['FTzeigInfo'], command=self.zeigFormInfo) self.FormenPopupMenu.tk_popup(*self.root.winfo_pointerxy()) def machKonkordanzTab(self): frame=self.tabPages.pages[s['ConcTab']]['page'] suchFrame = Frame(frame) suchFrame.pack(fill=X, padx=10, pady=5) self.suchwort = Entry(suchFrame, width=40, takefocus=1) self.suchwort.pack(side=LEFT) self.suchwort.bind("<Return>", self.zeigKonkordanz) Button(suchFrame, text=s['CTsuchen'], takefocus=1, command=self.zeigKonkordanz).pack(side=LEFT, padx=5, pady=10) Button(suchFrame, text=s['CTmachQuery'], command=self.QueryDialog).pack(anchor=W, padx=20, pady=10) listframe = Frame(frame) listframe.pack(expand=YES, fill=BOTH, side=LEFT, padx=5, pady=5) self.konkliste = MultiListBox.MultiListbox(listframe, ((s['ConcTab'], 60),), command=self.zeigZitat, borderwidth=1, height=20) self.konkliste.pack(side=LEFT, fill=BOTH, expand=YES) for l in self.konkliste.lists: l.bind('<Enter>', self.statusAktualisieren) l.bind('<Button-3>', self.KonkTabPopup) l.bind('<Double-Button-1>', self.zeigZitat) optFrame = LabelFrame(frame, text=s['CTOptionen']) optFrame.pack(fill=X, padx=5, pady=5) self.konkGanzewoerter = IntVar() Checkbutton(optFrame, text=s['CTganzWort'], variable=self.konkGanzewoerter).pack(anchor=W) self.konkGrossklein = IntVar() self.konkGrosskleinCheckbutton = Checkbutton(optFrame, text=s['CTignGross'], variable=self.konkGrossklein) self.konkGrosskleinCheckbutton.pack(anchor=W) self.markKonk = IntVar() Checkbutton(optFrame, text=s['CTmarkSuch'], variable=self.markKonk).pack(anchor=W) optFrame2 = Frame(optFrame) optFrame2.pack(fill=X, padx=5, pady=10) optFrame2a = Frame(optFrame2) optFrame2a.pack(fill=BOTH) self.konkContextL = StringVar() self.konkContextL.set(cfg['konkContextL']) Spinbox(optFrame2a, width=4, textvariable=self.konkContextL, from_=10, to=100, increment=10).pack(side=LEFT, anchor=W) Label(optFrame2a, text=s['CTcontextL']).pack(side=LEFT, padx=5) optFrame2b = Frame(optFrame2) optFrame2b.pack(fill=BOTH) self.konkContextR = StringVar() self.konkContextR.set(cfg['konkContextR']) Spinbox(optFrame2b, width=4, textvariable=self.konkContextR, from_=10, to=100, increment=10).pack(side=LEFT, anchor=W) Label(optFrame2b, text=s['CTcontextR']).pack(side=LEFT, padx=5) self.sortModusKonk = StringVar() Radiobutton(optFrame, text=s['CTsortAlpha'], value='alpha', variable=self.sortModusKonk).pack(anchor=W) Radiobutton(optFrame, text=s['CTsortR'], value='rechts', variable=self.sortModusKonk).pack(anchor=W) Radiobutton(optFrame, text=s['CTsortL'], value='links', variable=self.sortModusKonk).pack(anchor=W) self.sortModusKonk.set('alpha') Button(optFrame, text=s['CTaktualisier'], command=self.zeigKonkordanz).pack(anchor=W, padx=5, pady=10) def KonkTabPopup(self, event): self.KonkPopupMenu = Menu(self.root, tearoff=0) self.KonkPopupMenu.add_command(label=s['CTkopieren'], command=self.copy2clipboard) self.KonkPopupMenu.add_command(label=s['CTzeigZitat'], command=self.zeigZitat) self.KonkPopupMenu.tk_popup(*self.root.winfo_pointerxy()) def machZitatTab(self): frame=self.tabPages.pages[s['ZitatTab']]['page'] Label(frame, text=s['ZTinfo']).pack(padx=10, pady=10) txtframe = Frame(frame) txtframe.pack(expand=YES, fill=BOTH, side=LEFT, padx=5, pady=5) scrollbar = Scrollbar(txtframe, orient=VERTICAL) self.zitat = Text(txtframe, borderwidth=1, wrap=WORD, selectbackground='lightsteelblue', selectforeground='black', yscrollcommand=scrollbar.set) scrollbar.config(command=self.zitat.yview) scrollbar.pack(side=RIGHT, fill=Y, padx=0) self.zitat.pack(side=LEFT, expand=YES, fill=BOTH, padx=0) self.zitat.tag_configure('blau', foreground='blue', underline=1) self.zitat.tag_configure('rot', foreground='red') self.zitat.tag_bind('oeffnen', '<Double-Button-1>', self.zitatDatei_oeffnen) self.zitat.bind('<Button-3>', self.ZitatTabPopup) self.zitat.config(cursor='arrow') self.zitat.insert(END, s['ZTInit']) def ZitatTabPopup(self, event): self.ZitatPopupMenu = Menu(self.root, tearoff=0) self.ZitatPopupMenu.add_command(label=s['ZTkopieren'], command=self.copy2clipboard) self.ZitatPopupMenu.add_command(label=s['ZToeffnen'], command=self.zitatDatei_oeffnen) self.ZitatPopupMenu.tk_popup(*self.root.winfo_pointerxy()) def WebDialog(self): try: self.wd.focus_set() except: self.wd = Toplevel(self.root) self.wd.title("Web2corpus - TextSTAT WebSpider") frame = Frame(self.wd) frame.pack(expand=YES, fill=BOTH, padx=10, pady=10) Label(frame, justify=LEFT, text=s['WDinfo']).pack(anchor=W, padx=10, pady=5) self.webUrl = StringVar() url = Entry(frame, width=50, textvariable=self.webUrl) url.pack(anchor=W, padx=10, pady=5) Label(frame, text=s['WDfrageSeiten']).pack(anchor=W, padx=10, pady=5) frame1 = Frame(frame) frame1.pack(expand=YES, fill=BOTH) self.webAnzahl = StringVar() self.webAnzahl.set('1') Spinbox(frame1, width=5, textvariable=self.webAnzahl, values=(1,10,25,50,100,250,500,750,1000)).pack(side=LEFT, anchor=W, padx=10, pady=5) Label(frame1, text=s['WDanzahl']).pack(side=LEFT) self.webBasis = StringVar() self.webBasis.set('server') Radiobutton(frame, text=s['WDinSubdir'], value='subdir', variable=self.webBasis).pack(anchor=W, padx=10 ) Radiobutton(frame, text=s['WDaufServer'], value='server', variable=self.webBasis).pack(anchor=W, padx=10 ) Button(frame, text=s['WDok'], width=10, command=self.htmlFile_hinzu).pack(side=LEFT, padx=10, pady=10) Button(frame, text=s['WDcancel'], width=10, command=self.wd.destroy).pack(side=RIGHT, padx=10, pady=10) url.focus_set() def NewsDialog(self): try: self.nd.focus_set() except: self.nd = Toplevel(self.root) self.nd.title("News2corpus - TextSTAT NewsGrabber") frame = Frame(self.nd) frame.pack(expand=YES, fill=BOTH, padx=10, pady=10) Label(frame, justify=LEFT, text=s['NDinfo']).pack(anchor=W, padx=10, pady=5) frame1 = Frame(frame) frame1.pack(expand=YES, fill=BOTH) self.newsServer = StringVar() Entry(frame1, width=40, textvariable=self.newsServer).pack(side=LEFT, anchor=W, padx=10, pady=5) Label(frame1, text=s['NDserver']).pack(side=LEFT, padx=10, pady=5) frame2 = Frame(frame) frame2.pack(expand=YES, fill=BOTH) self.newsGruppe = StringVar() Entry(frame2, width=40, textvariable=self.newsGruppe).pack(side=LEFT, anchor=W, padx=10, pady=5) Label(frame2, text=s['NDgruppe']).pack(side=LEFT, padx=10, pady=5) frame3 = Frame(frame) frame3.pack(expand=YES, fill=BOTH) self.newsAnzahl = StringVar() self.newsAnzahl.set('50') Spinbox(frame3, width=5, textvariable=self.newsAnzahl, values=(1,10,25,50,100,250,500,750,1000)).pack(side=LEFT, anchor=W, padx=10, pady=5) Label(frame3, text=s['NDanzahl']).pack(side=LEFT) self.newsZitate = IntVar() self.newsZitate.set(1) Checkbutton(frame3, text=s['NDzitWeg'], variable=self.newsZitate).pack(side=LEFT, padx=20) Button(frame, text=s['NDok'], width=10, command=self.newsgroup_hinzu).pack(side=LEFT, padx=10, pady=10) Button(frame, text=s['NDcancel'], width=10, command=self.nd.destroy).pack(side=RIGHT, padx=10, pady=10) self.nd.focus_set() def QueryDialog(self): try: self.qd.focus_set() except: self.qd = Toplevel(self.root) self.qd.title("TextSTAT QueryEditor") frame = Frame(self.qd) frame.pack(expand=YES, fill=BOTH, padx=10, pady=10) Label(frame, justify=LEFT, text=s['QDinfo'], fg='blue').pack(anchor=W, padx=5, pady=15) frame1 = LabelFrame(frame, text=s['QDsuchFelder']) frame1.pack(fill=BOTH, expand=YES) frame1a = Frame(frame1) frame1a.pack(expand=YES, fill=BOTH) self.qAusdruck1 = Entry(frame1a) self.qAusdruck1.pack(side=LEFT, anchor=W, padx=5, pady=5) Label(frame1a, text=s['QAusdruck1']).pack(side=LEFT, padx=5, pady=5) frame1b = Frame(frame1) frame1b.pack(expand=YES, fill=BOTH) self.qAusdruck2 = Entry(frame1b) self.qAusdruck2.pack(side=LEFT, anchor=W, padx=5, pady=5) Label(frame1b, text=s['QAusdruck2']).pack(side=LEFT, padx=5, pady=5) frame2 = LabelFrame(frame, text=s['QAbstand']) frame2.pack(fill=BOTH, expand=YES, pady=30) self.qAbstandMin = Spinbox(frame2, width=5, from_=0, to=10) self.qAbstandMin.pack(side=LEFT, anchor=W, padx=5, pady=5) Label(frame2, text=s['QAbstandMin']).pack(side=LEFT, padx=5, pady=5) self.qAbstandMax = Spinbox(frame2, width=5, from_=0, to=10) self.qAbstandMax.pack(side=LEFT, anchor=W, padx=5, pady=5) Label(frame2, text=s['QAbstandMax']).pack(side=LEFT, padx=5, pady=5) Button(frame, text=s['QmachAusdruck'], command=self.query_machen).pack(side=LEFT, padx=10, pady=10) Button(frame, text=s['QDcancel'], width=10, command=self.qd.destroy).pack(side=RIGHT, padx=10, pady=10) self.qd.bind("<Return>", self.query_machen) self.qAusdruck1.focus_set() def query_machen(self, event=''): a1 = self.qAusdruck1.get() a1 = a1.replace('*', '\w*') a1 = a1.replace('?', '\w') a2 = self.qAusdruck2.get() a2 = a2.replace('*', '\w*') a2 = a2.replace('?', '\w') ab1 = self.qAbstandMin.get() ab2 = self.qAbstandMax.get() if a1 == '' and a2 == '': self.warnung(titel=s['Error'], text=s['ErrQuery']) self.qAusdruck1.focus_set() return if ab1 == '0' and ab2 == '0': such = "%s\W+%s" % (a1, a2) else: such = "%s(\W+\w+){%s,%s}\W+%s" % (a1, ab1, ab2, a2) self.busyCursorOn() self.suchwort.delete(0, END) self.suchwort.insert(END, such) self.konkGrossklein.set(1) self.konkGanzewoerter.set(1) self.zeigKonkordanz() self.busyCursorOff() def TextDialog(self, text='', titel='TextSTAT'): try: self.td.focus_set() except: self.td = Toplevel(self.root) self.td.transient(self.root) self.td.title(titel) self.td.geometry('600x400+50+50') frame = Frame(self.td) frame.pack(expand=YES, fill=BOTH) scrollbar = Scrollbar(frame, orient=VERTICAL) txt = Text(frame, borderwidth=1, height=15, wrap=WORD, font=(('Courier', 'New'), '9'), yscrollcommand=scrollbar.set) scrollbar.config(command=txt.yview) scrollbar.pack(side=RIGHT, fill=Y, padx=0) txt.pack(side=LEFT, expand=YES, fill=BOTH) Button(self.td, text=' OK ', command=self.td.destroy).pack(pady=10) txt.insert(END, text) self.td.focus_set() def zeigHistory(self): f = os.path.join(SkriptDir, 'History.txt') text = open(f).read() t = s['Titel'] + ' - ' + s['History'] self.TextDialog(text=text, titel=t) def zeigLicense(self): f = os.path.join(SkriptDir, 'License.txt') text = open(f).read() t = s['Titel'] + ' - ' + s['License'] self.TextDialog(text=text, titel=t) # Das Korpus # Dictionary von Dictionaries, der Dateipfad dient als Key # Format: db[dateipfad] = {'path':f, 'file':ff} # ansprechen als z.B.: self.korpus[dateipfad]['file'] # ACHTUNG: in fruehen Versionen war das eine Liste von Listen [dateiname, datei] def korpus_new(self): # Wenn anderes Korpus ge鰂fnet ist if self.korpus != None and self.korpus.dbGeaendert == 1: jn = tkMessageBox.askquestion(s['KorpusSave'], s['AbfrageSave']) if jn == 'yes': self.korpus_save() try: f = tkFileDialog.asksaveasfilename(initialdir=cfg['KorpDir'], defaultextension='.crp', title=s['KorpusNew2']) if f: # Default-Dir neu setzen cfg['KorpDir'] = os.path.dirname(f) self.korpus = Korpus.Korpus(self) self.korpus.newDb(f)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -