⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 textstat.pyw

📁 documents classification and words statiscs TF/IDF etc
💻 PYW
📖 第 1 页 / 共 4 页
字号:
#!/usr/bin/python# -*- coding: iso-8859-1 -*-import os, cPickle, StringIO, sys, webbrowserfrom Tkinter import *import tkMessageBox, tkFileDialogimport StatusBar, ToolBar, ProgressBarimport TabPage, MultiListBoximport Korpus, LangOpttry:    from win32com.client import Dispatchexcept:    pass####################### Konfigurieren...# SkriptDir = os.path.dirname(os.path.abspath(__file__))# Dies scheint besser zu funktionieren:SkriptDir = os.path.dirname(sys.argv[0])ImgDir = os.path.join(SkriptDir, 'Images')cfgFile = os.path.join(SkriptDir, 'TextSTAT.ini')try:    f = open(cfgFile)    cfg = cPickle.load(f)    f.close()except:    cfg = {}    cfg['Benutzersprache'] = 'en'     # Optionen: de | nl | en | pt | fr | gl    cfg['KorpDir'] = SkriptDir    cfg['FileDir'] = SkriptDir    cfg['freqMin'] = '0'    cfg['freqMax'] = '0'    cfg['konkContextL'] = '40'    cfg['konkContextR'] = '40'    cfg['zitContextL'] = '350'    cfg['zitContextR'] = '350'    cfg['FileKodierung'] = 'iso8859_1'  # wird momentan negiert...    cfg['fenster'] = '700x580+10+10'    # d.i.: Breite x H鰄e + xOffset + yOffset# Spracheif cfg['Benutzersprache'] == 'en':    s = LangOpt.englishelif cfg['Benutzersprache'] == 'nl':    s = LangOpt.nederlandselif cfg['Benutzersprache'] == 'pt':    s = LangOpt.portugueseelif cfg['Benutzersprache'] == 'fr':    s = LangOpt.francaiselif cfg['Benutzersprache'] == 'gl':    s = LangOpt.galicianelse:    s = LangOpt.deutsch################ GUIroot = Tk()root.title(s['Titel_lang'])root.geometry(cfg['fenster'])root.minsize(650, 550)   # (Breite, H鰄e)root.option_add('*Text*background', 'white')root.option_add('*Listbox*background', 'white')if os.name == 'nt':    ico = os.path.join(SkriptDir, 'Images/TextSTAT.ico')    root.iconbitmap(bitmap=ico)    root.option_add('*Font', 'Verdana 8')    root.option_add('*Listbox*font', (('Courier', 'New'), '9'))    root.option_add('*Text*font', 'Verdana 10')else:    root.option_add('*Font', 'Arial 9 bold')    root.option_add('*Listbox*font', 'Monospace 11')    root.option_add('*Text*font', 'Arial 11')class GUI:    def __init__(self, root):        self.root = root        self.korpus = None        try:	            self.LetzteKorpusFiles=[]            self.LetzteKorpusFiles.append(cfg['LetzteKorpusFiles0'])            self.LetzteKorpusFiles.append(cfg['LetzteKorpusFiles1'])            self.LetzteKorpusFiles.append(cfg['LetzteKorpusFiles2'])            self.LetzteKorpusFiles.append(cfg['LetzteKorpusFiles3'])        except:            pass        # Wenn Fenster 黚er Windows-Fenstermanager geschlossen wird...        self.root.protocol( 'WM_DELETE_WINDOW', self.ende )                self.fenster = Frame(self.root)        self.fenster.pack(expand=YES, fill=BOTH )        # Das Menu        MeinMenu = Menu(self.root)        self.root.config(menu=MeinMenu)        self.filemenu = Menu(MeinMenu, tearoff=0)        MeinMenu.add_cascade(label=s['Korpus'], underline=0, menu = self.filemenu)        self.filemenu.add_command(label=s['KorpusNew'], underline=0, command = self.korpus_new)        self.filemenu.add_command(label=s['KorpusOpen'], underline=0, command = self.korpus_open)        self.filemenu.add_command(label=s['KorpusHinzu'], underline=1, command = self.korpus_hinzu)        self.filemenu.add_command(label=s['KorpusSave'], underline=2, command = self.korpus_save)        self.filemenu.add_command(label=s['KorpusSaveAs'], underline=3, command = self.korpus_save_as)        self.filemenu.add_command(label=s['KorpusDel'], underline=4, command = self.korpus_del)        self.recentfilesmenu = Menu(self.filemenu, tearoff=0)        self.filemenu.add_cascade(label=s['LetzteKorpora'], underline=0, state=DISABLED, menu=self.recentfilesmenu)        self.update_recentfiles_menu()                self.filemenu.add_separator()        self.filemenu.add_command(label=s['DateiHinzu'], underline=0, command = self.datei_hinzu)        self.filemenu.add_command(label=s['WebHinzu'], underline=0, command = self.WebDialog)        self.filemenu.add_command(label=s['NewsHinzu'], underline=0, command = self.NewsDialog)        self.filemenu.add_separator()        self.filemenu.add_command(label=s['DateiWeg'], underline=2, command = self.datei_entfernen)        self.filemenu.add_separator()        self.filemenu.add_command(label=s['OptSave'], underline=0, command = self.optionen_speichern)        self.filemenu.add_command(label=s['Exit'], underline=1, command = self.ende)        exportmenu = Menu(MeinMenu, tearoff=0)        MeinMenu.add_cascade(label=s['ImpEx'], underline=0, menu = exportmenu)        exportmenu.add_command(label=s['Ex2csv'], underline=0, command = self.export2csv)        exportmenu.add_command(label=s['Ex2txt'], underline=0, command = self.export2txt)        exportmenu.add_separator()        exportmenu.add_command(label=s['Ex2excel'], underline=1, command = self.export2excel)        exportmenu.add_command(label=s['Ex2word'], underline=1, command = self.export2word)        # exportmenu.add_separator()        # exportmenu.add_command(label=s['ImpKorpus'], underline=7, command = self.korpus_import)        sprachmenu = Menu(MeinMenu, tearoff=0)        MeinMenu.add_cascade(label=s['Sprache'], underline=0, menu = sprachmenu)        self.sprache_aendern = StringVar()        self.sprache_aendern.set(cfg['Benutzersprache'])        oberflaechensprachen = [            ['Deutsch', 'de'],            ['English', 'en'],            ['Nederlands', 'nl'],            ['Portugu阺', 'pt'],            ['Fran鏰is', 'fr'],            ['Galego', 'gl'],            ]        for sprach_label, sprach_abkz in oberflaechensprachen:            sprachmenu.add_radiobutton(label=sprach_label, underline=0, variable=self.sprache_aendern, value=sprach_abkz, command=self.sprachwarnung)                    codepagemenu = Menu(MeinMenu, tearoff=1)        MeinMenu.add_cascade(label=s['CodePage'], underline=1, menu = codepagemenu)        self.dateiart = StringVar()        self.dateiart.set(cfg['FileKodierung'])        # self.dateiart.set('iso8859-1')        kodierungen = [            ['UTF-8 (Unicode)', 'utf_8'],            ['UTF-16 (Unicode)', 'utf_16'],            ['ISO-8859-1 (Latin-1)', 'iso8859_1'],            ['ISO-8859-2 (Latin-2)', 'iso8859_2'],            ['ISO-8859-5 (Cyrillic)', 'iso8859_5'],            ['ISO-8859-6 (Arabic)', 'iso8859_6'],            ['ISO-8859-7 (Greek)', 'iso8859_7'],            ['ISO-8859-8 (Hebrew)', 'iso8859_8'],            ['CP1252 (ANSI, WinLatin-1)', 'cp1252'],            ['CP1250 (WinLatin-2)', 'cp1250'],            ['CP1251 (WinCyrillic)', 'cp1251'],            ['CP1254 (WinTurkish)', 'cp1254'],            ['CP1255 (WinHebrew)', 'cp1255'],            ['CP1256 (WinArabic)', 'cp1256'],            ['CP850 (MS DOS)', 'cp850'],            ['KOI 8 R (Russian)', 'koi8_r'],            ['GB 2312 (Simplified Chinese)', 'gb2312'],            ['BIG 5 (Traditional Chinese)', 'big5'],            ]        for bezeichnung, kodierung in kodierungen:            codepagemenu.add_radiobutton(label=bezeichnung, variable=self.dateiart, value=kodierung)          # Hilfe- / Info-Menu        hilfemenu = Menu(MeinMenu, tearoff=0)        MeinMenu.add_cascade(label=s['Hilfe'], underline=1, menu = hilfemenu)        hilfemenu.add_command(label=s['RegExpHelp'], underline=0, command = self.regex_hilfe)        hilfemenu.add_separator()        hilfemenu.add_command(label=s['History'], underline=0, command = self.zeigHistory)        hilfemenu.add_command(label=s['License'], underline=0, command = self.zeigLicense)        hilfemenu.add_separator()        hilfemenu.add_command(label=s['Info'], underline=0, command = self.about)        # Die Statuszeile        self.status = StatusBar.StatusBar(self.root, ProgressBar=1)        self.status.pack(fill=X)        self.status.set(s['Willkommen'])        self.status.indicator(s['StatusNoKorp'])        # Der Toolbar        # Die Icons stammen von http://www.trash.net/~ffischer/admin/icons/        #        self.toolbar = ToolBar.ToolBar(self.fenster, statusbar = self.status)        self.toolbar.pack(side=TOP, fill=X)        self.toolbar.add('NeuButton', s['KorpusNew'], ImgDir+'/New.gif', self.korpus_new, s['KorpusNew2'])        self.toolbar.add('KorpusOeffnenButton', s['KorpusOpen'], ImgDir+'/Open.gif', self.korpus_open, s['KorpusOpen2'])        self.toolbar.add('KorpusHinzuButton', s['KorpusHinzu'], ImgDir+'/FolderIn.gif', self.korpus_hinzu, s['KorpusHinzu2'])        self.toolbar.add('SaveButton', s['KorpusSave'], ImgDir+'/Save.gif', self.korpus_save, s['KorpusSave2'])        self.toolbar.add('WegButton', s['KorpusDel'], ImgDir+'/Delete.gif', self.korpus_del, s['KorpusDel2'])        self.toolbar.add_separator()        self.toolbar.add('HTMLhinzuButton', s['WebHinzu'], ImgDir+'/DataStoreGrey.gif', self.WebDialog, s['WebHinzu2'] )        self.toolbar.add('HinzuButton', s['DateiHinzu'], ImgDir+'/DataStore.gif', self.datei_hinzu, s['DateiHinzu2'] )        self.toolbar.add('EntfernButton', s['DateiWeg'], ImgDir+'/DataExtract.gif', self.datei_entfernen, s['DateiWeg2'])        self.toolbar.add_separator()        self.toolbar.add('FrequenzButton', s['FreqZeigen'], ImgDir+'/Column.gif', self.zeigWortfrequenz, s['FreqZeigen2'])        self.toolbar.add_separator()        self.toolbar.add('CopyButton', s['Kopieren'], ImgDir+'/Copy.gif', self.copy2clipboard, s['Kopieren2'])        self.toolbar.add_separator()        # self.toolbar.add('ExcelButton', s['Ex2excel'], ImgDir+'/NewSheet.gif', self.export2excel, s['Ex2excel2'])        # self.toolbar.add('WordButton', s['Ex2word'], ImgDir+'/DocumentDraw.gif', self.export2word, s['Ex2word2'])        # self.toolbar.add_separator()        self.toolbar.add('HelpButton', s['Info'], ImgDir+'/Help.gif', self.about, s['Info2'])        # Die Arbeitsflaeche        self.tabPages = TabPage.TabPageSet( self.fenster, pageNames=[ s['KorpusTab'], s['FormenTab'], s['ConcTab'], s['ZitatTab'] ] )        self.tabPages.pack( expand=TRUE,fill=BOTH )        self.machKorpusTab()        self.machFormenTab()        self.machKonkordanzTab()        self.machZitatTab()        self.tabPages.pages[s['KorpusTab']]['page'].lift()        # Beim ersten Start: Sprache festlegen        if not os.path.exists(cfgFile):            self.info('TextSTAT language', 'Welcome to TextSTAT! \n\nYou can change the language of TextSTAT (Menu > Language) \nAvailable Languages are: English, German, Dutch, French, Potuguese, Galician')            self.optionen_speichern()                def machKorpusTab(self):        frame=self.tabPages.pages[s['KorpusTab']]['page']        self.infotxt = StringVar()        self.infolabel = Label(frame, wraplength=200, justify=LEFT, textvariable=self.infotxt)        self.infolabel.pack(side=RIGHT, padx=10, pady=10)        listframe = Frame(frame)        listframe.pack(expand=YES, fill=BOTH, side=LEFT, padx=5, pady=5)        vscrollbar = Scrollbar(listframe, orient=VERTICAL)        hscrollbar = Scrollbar(listframe, orient=HORIZONTAL)        self.datliste = Listbox(listframe, selectmode=EXTENDED, borderwidth=1, yscrollcommand=vscrollbar.set, xscrollcommand=hscrollbar.set)        vscrollbar.config(command=self.datliste.yview)        hscrollbar.config(command=self.datliste.xview)        vscrollbar.pack(side=RIGHT, fill=Y, padx=0)        hscrollbar.pack(side=BOTTOM, fill=X, pady=0)        self.datliste.pack(side=LEFT, expand=YES, fill=BOTH, padx=0)        self.datliste.bind('<Enter>', self.statusAktualisieren)        self.datliste.bind('<Button-3>', self.KorpusTabPopup)        self.datliste.bind('<Double-Button-1>', self.datei_oeffnen)        self.infotxt.set(s['KTinfo'])    def KorpusTabPopup(self, event):        self.KorpusPopupMenu = Menu(self.root, tearoff=0)        self.KorpusPopupMenu.add_command(label=s['KTkopieren'], command=self.copy2clipboard)        self.KorpusPopupMenu.add_command(label=s['KTopen'], command=self.datei_oeffnen)        self.KorpusPopupMenu.add_command(label=s['KTdatinfo'], command=self.datei_info)        self.KorpusPopupMenu.add_command(label=s['KTdatweg'], command=self.datei_entfernen)        self.KorpusPopupMenu.tk_popup(*self.root.winfo_pointerxy())    def machFormenTab(self):        frame=self.tabPages.pages[s['FormenTab']]['page']        listframe = Frame(frame)        listframe.pack(side=LEFT, expand=YES, fill=BOTH, padx=5, pady=5)        self.freqliste = MultiListBox.MultiListbox(listframe, ((s['FTwortform'], 55), (s['FTfrequenz'], 5)),                            command=self.zeigKonkordanz, borderwidth=1, height=20)        self.freqliste.pack(side=LEFT, fill=BOTH, expand=YES)        for l in self.freqliste.lists:            l.bind('<Enter>', self.statusAktualisieren)            l.bind('<Button-3>', self.FormenTabPopup)        optFrame = LabelFrame(frame, text=s['FTOptionen'])        optFrame.pack(fill=X, padx=5, pady=5)        # Label(optFrame, text=s['FTinfo'], justify=LEFT).pack(anchor=W)        optFrame1 = Frame(optFrame)        optFrame1.pack(fill=BOTH, pady=10)        self.sortModusFreq = StringVar()        Radiobutton(optFrame1, text=s['FTsortFreq'], value='freq', variable=self.sortModusFreq).pack(anchor=W)        Radiobutton(optFrame1, text=s['FTsortAlpha'], value='alpha', variable=self.sortModusFreq).pack(anchor=W)        Radiobutton(optFrame1, text=s['FTsortRetro'], value='retro', variable=self.sortModusFreq).pack(anchor=W)        self.sortModusFreq.set('freq')        optFrame2 = Frame(optFrame)        optFrame2.pack(fill=X, padx=5)        self.minFreq = StringVar()        self.minFreq.set(cfg['freqMin'])        Spinbox(optFrame2, width=5, textvariable=self.minFreq, values=('---',1,2,3,4,5,10,25,50,100,250,500,750,1000,2500,5000,10000)).pack(side=LEFT, anchor=W)        Label(optFrame2, text=s['FTminFreq']).pack(side=LEFT, padx=5)        optFrame3 = Frame(optFrame)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -