示例#1
0
文件: 1.py 项目: rishabh279/MRS
    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.pack()
        self.model = TableModel()
        self.table = TableCanvas(self, model=self.model)
        self.table.createTableFrame()
        root.bind('<ButtonRelease-1>', self.clicked)   #Bind the click release event

        self.create_widgets()
示例#2
0
	def initTable(self, ev = None):
		self.tableFrame = Tkinter.Frame(self.top)
		self.tableFrame.pack(expand = True, fill = Tkinter.BOTH) # 后期修改
		self.top.geometry('920x700+200+100')
		
		self.model = TableModel(rows = 0, columns = 0) # like HTML
		self.bookTable = TableCanvas(self.tableFrame, self.model, cellwidth=120, cellbackgr='#e3f698',
                        thefont=('Arial',12), rowheight=22, rowheaderwidth=30, rowselectedcolor='yellow', editable=False) # like CSS
		self.bookTable.createTableFrame()
		
		self.colnames = ('ISBN', '书名', '作者', '出版社', '出版时间', '价格')
		for name in self.colnames:
			self.bookTable.addColumn(name)
		self.bookTable.addRows(1)
		self.bookTable.autoResizeColumns()
示例#3
0
    def __init__(self, parent, db, tableName="Leer"):

        ttk.Frame.__init__(self, parent)

        self.model = TableModel()
        self.table = TableCanvas(self, model=self.model)
        self.pack(fill=tk.BOTH, expand=1)
        self.table.createTableFrame()

        if tableName == "Leer":

            return

        conn = sqlite3.connect(db)

        c = conn.cursor()

        c.execute("PRAGMA table_info(%s)" % tableName)

        # now create the model
        data = {}

        result = c.fetchall()

        colnames = []

        for r in result:

            colnames.append(r[1])

        c.execute("SELECT * from %s" % tableName)

        rows = c.fetchall()

        n = 0

        for n in range(len(rows)):
            data[n] = {}
            data[n]["label"] = n
            count = 0
            for r in rows[n]:

                data[n][colnames[count]] = r
                count += 1

        self.model.importDict(data)
        self.table.redrawTable()
示例#4
0
    def ratSightings(self):
        #call API for data
        r = requests.get(
            'http://ec2-54-174-96-216.compute-1.amazonaws.com:9000/showRecords'
        )
        rtext = r.text
        rawdata = json.loads(rtext)

        #create table & model
        self.ratSightingView = Toplevel()
        self.ratSightingView.title("List of recent rat sightings")

        self.rattable = Frame(self.ratSightingView)
        self.rattable.pack()

        model = TableModel()
        model.importDict(rawdata)

        #convert date column to datetime data type
        for x in range(len(rawdata)):
            datestr = model.getValueAt(x, 6)
            try:
                date = datetime.datetime.strptime(datestr,
                                                  '%m/%d/%Y %I:%M:%S %p')
                model.setValueAt(date.strftime('%Y/%m/%d %I:%M:%S %p'), x, 6)
            except:
                try:
                    dt = parser.parse(datestr)
                    model.setValueAt(date.strftime('%Y/%m/%d %I:%M:%S %p'), x,
                                     6)
                except:
                    pass
                pass

        #get data into table
        table = TableCanvas(self.rattable, model=model)
        table.createTableFrame()

        #sort by date
        table.sortTable(columnName='date')
        '''
    def initTable(self):
        self.tabFm = Tkinter.Frame(self.top)
        self.tabFm.pack(expand=True, fill=Tkinter.BOTH)  # 后期修改
        self.top.geometry('920x700+200+100')

        self.model = TableModel(rows=0, columns=0)  # like HTML
        self.table = TableCanvas(self.tabFm,
                                 self.model,
                                 cellwidth=120,
                                 cellbackgr='#e3f698',
                                 thefont=('Arial', 12),
                                 rowheight=22,
                                 rowheaderwidth=30,
                                 rowselectedcolor='yellow',
                                 editable=False)  # like CSS
        self.table.createTableFrame()

        self.colnames = ('ID', '姓名', '年龄', '加入时间')
        for name in self.colnames:
            self.table.addColumn(name)

        self.refresh()
示例#6
0
    def init_common_stat(self, statistic):
        self.frame_common_stat = Frame(self)
        self.frame_common_stat.grid(row=1, column=0, sticky=N + S + E + W)

        model_common_stat = TableModel(10, False)
        model_common_stat.add_column(_("clm_name"),
                                     typedata='text',
                                     align='left')
        model_common_stat.add_column(_("clm_ru_en_cnt"),
                                     typedata='number',
                                     align='right',
                                     max_val=u"99999")
        model_common_stat.add_column(_("clm_en_ru_cnt"),
                                     typedata='number',
                                     align='right',
                                     max_val=u"99999")
        model_common_stat.add_column(_("clm_ru_en_perc"),
                                     typedata='percent',
                                     align='right',
                                     max_val=u"100.0 %")
        model_common_stat.add_column(_("clm_en_ru_perc"),
                                     typedata='percent',
                                     align='right',
                                     max_val=u"100.0 %")

        row_name = [[_("row_learned")], [_("row_study")], [_("row_learn")],
                    [_("row_total")]]
        for row in [
                row_name[i] + it
                for i, it in enumerate(statistic.get_common_stat())
        ]:
            model_common_stat.add_row(row)

        self.table_common_stat = TableCanvas(self.frame_common_stat,
                                             model_common_stat,
                                             sort_enable=False)
        self.table_common_stat.createTableFrame()
        self.frame_common_stat.grid_forget()
示例#7
0
    def __table__(self, master):
        try:
            if self.rule_win.state() == 'normal':
                pass
        except:
            data = {}
            colnums = ['Rule', 'Node', 'Question', 'Yes', 'No']
            rule_dict = self.df.ix[:, 'Rule':'No']

            for r in range(len(rule_dict.index)):
                plice = {}
                for c in range(len(rule_dict.columns)):
                    if rule_dict.iloc[r, c] == 'nan':
                        plice[rule_dict.columns[c]] = ' '
                    else:
                        plice[rule_dict.columns[c]] = rule_dict.iloc[r, c]
                data[str(r)] = plice

            self.rule_win = Toplevel(master)
            frame = Frame(self.rule_win)
            frame.pack()
            model = TableModel()

            for key in colnums:
                model.addColumn(key)  #sort the columns

            model.importDict(data)
            table = TableCanvas(frame,
                                model=model,
                                width=800,
                                height=500,
                                rowheight=20,
                                editable=False,
                                cellbackgr='#E3F6CE',
                                reverseorder=1,
                                rowselectedcolor='yellow')
            table.createTableFrame()
            table.sortTable(columnName='Rule')
示例#8
0
root.geometry('1000x700')

f = Figure(figsize=(4, 4), dpi=50)
axis = f.add_subplot(111)
canvas = FigureCanvasTkAgg(f, master=root)
canvas.get_tk_widget().place(x=10, y=30)
frame2 = Frame(root)
frame2.place(x=20, y=300)
X_Axis = pylab.arange(0, 100, 1)
plotFigure = Figure(figsize=(4, 4), dpi=50)
axis2 = plotFigure.add_subplot(111)
axis2.grid(True)
axis2.set_title("Mean value per Frame")
axis2.axis([0, 100, 0, 255])
Plot = axis2.plot(X_Axis, [0] * 100, 'o-', color='r', markersize=6)

model = TableModel()
table = TableCanvas(frame2, model, height=100, width=300)
model = table.model
table.createTableFrame()

canvas2 = FigureCanvasTkAgg(plotFigure, master=root)
canvas2.get_tk_widget().place(x=500, y=30)

b1 = Button(root, text="Start", bg='white', command=video_start).place(x=50,
                                                                       y=600)
b2 = Button(root, text="Stop", bg='white', command=video_stop).place(x=400,
                                                                     y=600)
root.mainloop()
#===========================================================================================
示例#9
0
    def init_detailed_stat(self, statistic, stat_count_row):
        self.frame_detailed_stat = Frame(self)
        self.frame_detailed_stat.grid(row=1, column=0, sticky=N + S + E + W)

        self.model_ru_en = TableModel(stat_count_row, True)
        self.model_ru_en.add_column(_("clm_word"),
                                    typedata='text',
                                    align='left')
        self.model_ru_en.add_column(_("clm_transcription"),
                                    typedata='text',
                                    align='left')
        self.model_ru_en.add_column(_("clm_translate"),
                                    typedata='text',
                                    align='left')
        self.model_ru_en.add_column(_("clm_cnt_suc"),
                                    typedata='number',
                                    align='right',
                                    max_val=u"999")
        self.model_ru_en.add_column(_("clm_cnt_err"),
                                    typedata='number',
                                    align='right',
                                    max_val=u"999")
        self.model_ru_en.add_column(_("clm_study_perсent"),
                                    typedata='percent',
                                    align='right',
                                    max_val=u"100.0 %")

        for row, word in statistic.get_ru_en():
            self.model_ru_en.add_row(row, word)
        self.model_ru_en.sort(5, True)

        self.table_detailed_stat = TableCanvas(
            self.frame_detailed_stat,
            self.model_ru_en,
            sort_enable=True,
            callback=self.draw_callback,
            dbl_click_callback=self.rename_dlg)
        self.table_detailed_stat.createTableFrame()

        self.model_en_ru = TableModel(stat_count_row, True)
        self.model_en_ru.add_column(_("clm_word"),
                                    typedata='text',
                                    align='left')
        self.model_en_ru.add_column(_("clm_transcription"),
                                    typedata='text',
                                    align='left')
        self.model_en_ru.add_column(_("clm_translate"),
                                    typedata='text',
                                    align='left')
        self.model_en_ru.add_column(_("clm_cnt_suc"),
                                    typedata='number',
                                    align='right')
        self.model_en_ru.add_column(_("clm_cnt_err"),
                                    typedata='number',
                                    align='right')
        self.model_en_ru.add_column(_("clm_study_perсent"),
                                    typedata='percent',
                                    align='right')

        for row, word in statistic.get_en_ru():
            self.model_en_ru.add_row(row, word)
        self.model_en_ru.sort(5, True)

        for col in range(0, self.model_en_ru.get_column_count()):
            self.model_en_ru.get_column(
                col).width = self.model_ru_en.get_column(col).width
示例#10
0
    def __init__(self, parent):

        self.listEnfermedad = ['a', "d", "c"]
        self.listMedicamentos = ['a', "d", "c"]
        self.listObserver = []
        self.actualizarListas()
        self.actualrow = 0
        self.rowEvent = 99

        #Ventana de tablas y entradas
        self.r1 = parent
        self.r = Frame(self.r1)
        self.r1.wm_title("Ventana de busqueda")
        self.group = LabelFrame(self.r, bd=0)
        # self.group.grid(row=0,column=0,sticky=NW, padx=5, pady=5)
        self.group.pack(side=LEFT)
        self.r.pack(expand=True, fill='x', side=LEFT)

        # Ventana que muestra antecedesntes y informacion especifica de radiografia
        self.a = Frame(self.r1, padx=20, pady=20)
        self.b = VentanaDetalles(self.a)
        self.b.setWindow(self)
        self.a.pack(side=RIGHT)

        #Filtrar por id
        self.putInPlace(IdSearch)
        #Filtrar por nombre
        self.putInPlace(NameSearch)
        #Filtrar por apellido
        self.putInPlace(LastNameSearch)
        #Filtrar por Rut
        self.putInPlace(RutSearch)
        #Filtrar por sexo
        self.putInPlace(SexoSearch)
        #Filtrar por Enfermedad y confirmado comboBox
        self.listObserver.append(self.putInPlace(Enfermedadearch))
        #Filtro confirmado
        self.putInPlace(ConfirmadoSearch)
        #Tipo de radiografia
        self.putInPlace(TipoRadioSearch)
        #Fecha inicio fecha final
        self.putInPlace(FechaSearch)
        #Fuma
        self.putInPlace(FumaSearch)
        #Medicamento
        self.listObserver.append(self.putInPlace(MedicamentoSearch))
        #Mostrar resultados
        marco11 = Frame(self.r)

        bSearch = Button(marco11, text="Busqueda", command=self.doQuery)
        bSearch.pack(padx=5, pady=5)

        lResultados = Label(marco11, text="Resultados de query: ")
        lResultados.pack(padx=5, pady=5)

        # marco11.grid(row=self.actualrow, column=0,sticky=W, padx=5, pady=5)
        marco11.pack()
        self.actualrow += 1

        marco12 = Frame(self.r)
        self.model = TableModel()
        self.table = TableCanvas(marco12,
                                 self.model,
                                 cellwidth=120,
                                 cellbackgr='#e3f698',
                                 thefont=('Arial', 9),
                                 rowheight=18,
                                 rowheaderwidth=30,
                                 rowselectedcolor='yellow',
                                 editable=False)
        self.table.createTableFrame()
        # marco12.grid(row=self.actualrow,column=0,sticky=W, padx=5, pady=5)
        marco12.pack(expand=False, fill='x')
        self.actualrow += 1

        self.actualizarListas()

        self.r1.bind("<Button-1>", self.changeCurrentId)
示例#11
0
    def findTermFrequencies(self):
        """
            Method for calculating the frequencies of each term in the tweets.
        """

        if not os.path.isfile(self.TwitterKeysFile):
            tkMessageBox.showerror(
                "ERROR",
                "Twitter API credentials not filled. Use the Set/Update Twitter Credentials button to do so.",
                parent=self.parent)
            return

        self.count += 1
        if self.termFrequenciesOpenedFlag == False:
            # set window opened
            self.termFrequenciesOpenedFlag = True

            # initialize window
            global TermFrequenciesWindow

            def toggleFlag():
                self.termFrequenciesOpenedFlag = False
                TermFrequenciesWindow.destroy()

            TermFrequenciesWindow = tk.Toplevel(self)
            TermFrequenciesWindow.minsize(500, 500)
            #TwitterKeysWindow.overrideredirect(True)
            TermFrequenciesWindow.geometry("500x500+100+100")
            TermFrequenciesWindow.title("Term Frequencies (only > 0.5%)")
            TermFrequenciesWindow.config(bd=5)
            TermFrequenciesWindow.protocol("WM_DELETE_WINDOW", toggleFlag)

            # create a new TableModel for table data
            model = TableModel()

            # create a new TableCanvas for showing the table
            table = TableCanvas(TermFrequenciesWindow,
                                model=model,
                                editable=False)
            table.createTableFrame()

            # dictionary for storing table data
            tableData = {}

            # calculate frequencies
            freqs = {}
            total = 0
            outfile = open(self.TwitterStreamFile)
            for line in outfile:
                json_obj = json.loads(line)
                try:
                    text = json_obj['text'].decode('utf-8')
                    # clean the text
                    text = ' '.join(
                        re.sub(
                            "(@[A-Za-z0-9]+)|([^0-9A-Za-z \t])|(\w+:\/\/\S+)",
                            "", text).split())
                    text = re.sub(r'^https?:\/\/.*[\r\n]*',
                                  '',
                                  text,
                                  flags=re.MULTILINE)
                    text = re.sub(r'RT', '', text, flags=re.MULTILINE)
                    #print text
                    text_list = text.split(' ')
                    for char in text_list:
                        if char.isalnum():
                            if char not in freqs:
                                freqs[char] = 1
                            else:
                                freqs[char] += 1
                            total += 1

                except:
                    #print "passed"
                    pass

            for key in freqs.keys():
                if freqs[key] / float(total) > 0.005:
                    # insert frequencies into the table dictionary
                    tableData[uuid.uuid4()] = {
                        'Term':
                        key,
                        'Frequency (%)':
                        str(round((freqs[key] / float(total)) * 100, 2))
                    }
                #print key + " " + str(freqs[key]/float(total))

            # insert and sort data in the table
            model.importDict(tableData)
            #sort in descending order
            model.setSortOrder(columnIndex=1, reverse=1)
            table.adjustColumnWidths()
            table.resizeColumn(0, 200)
            table.resizeColumn(1, 200)
            table.redrawTable()
示例#12
0
    def findTweetSentiment(self):
        """
            Method for calculating the sentiment of each tweet.
        """

        if not os.path.isfile(self.TwitterKeysFile):
            tkMessageBox.showerror(
                "ERROR",
                "Twitter API credentials not filled. Use the Set/Update Twitter Credentials button to do so.",
                parent=self.parent)
            return

        self.count += 1
        if self.tweetSentimentOpenedFlag == False:
            # set window opened
            self.tweetSentimentOpenedFlag = True

            # initialize window
            global TweetSentimentWindow

            def toggleFlag():
                self.tweetSentimentOpenedFlag = False
                TweetSentimentWindow.destroy()

            TweetSentimentWindow = tk.Toplevel(self)
            TweetSentimentWindow.minsize(600, 500)
            #TwitterKeysWindow.overrideredirect(True)
            TweetSentimentWindow.geometry("1000x500+100+100")
            TweetSentimentWindow.title(
                "Tweet Sentiments (Zero values omitted)")
            TweetSentimentWindow.config(bd=5)
            TweetSentimentWindow.protocol("WM_DELETE_WINDOW", toggleFlag)

            # create a new TableModel for table data
            model = TableModel()

            # create a new TableCanvas for showing the table
            table = TableCanvas(TweetSentimentWindow,
                                model=model,
                                editable=False)
            table.createTableFrame()

            # dictionary for storing table data
            tableData = {}

            # calculate sentiments
            afinnfile = open(self.AFINNFile)
            scores = {}
            for line in afinnfile:
                term, score = line.split("\t")
                scores[term] = int(score)

            #print scores.items()
            positive = 0.0
            negative = 0.0

            outfile = open(self.TwitterStreamFile)
            for line in outfile:
                json_obj = json.loads(line)
                sentiment = 0
                try:
                    text = json_obj['text'].decode('utf-8')
                    # clean the text
                    text = ' '.join(
                        re.sub(
                            "(@[A-Za-z0-9]+)|([^0-9A-Za-z \t])|(\w+:\/\/\S+)",
                            "", text).split())
                    text = re.sub(r'^https?:\/\/.*[\r\n]*',
                                  '',
                                  text,
                                  flags=re.MULTILINE)
                    text = re.sub(r'RT', '', text, flags=re.MULTILINE)
                    #print text
                    text_list = text.split(' ')
                    for char in text_list:
                        if char in scores:
                            sentiment += scores[char]

                    if sentiment != 0:
                        # add items to table data dictionary
                        tableData[uuid.uuid4()] = {
                            'Tweet': text,
                            'Score': str(sentiment)
                        }
                        if sentiment > 0:
                            positive += 1
                        elif sentiment < 0:
                            negative += 1
                        #print text + "   " + str(sentiment) + "\n\n"

                except:
                    #print "passed"
                    pass

            # calculate ratio
            if positive > 0 and negative > 0:
                ratio = round(float(positive) / float(negative), 2)

            # insert and sort data in the table
            model.importDict(tableData)
            table.resizeColumn(0, 850)
            table.resizeColumn(1, 50)
            table.sortTable(columnName='Score')
            table.redrawTable()

            if positive > negative:
                extra = "The overall sentiment is POSITIVE."
            else:
                extra = "The overall sentiment is NEGATIVE."

            # show info box about the overall result
            tkMessageBox.showinfo(
                "Score Ratio",
                "The ratio of positive vs. negative tweets is " + str(ratio) +
                ". " + extra,
                parent=TweetSentimentWindow)
示例#13
0
    def __init__(self, tableName, database, themeWindow, returnEvent):
        self.tableName = tableName
        self.database = database
        self.themeWindow = themeWindow
        # Start logger
        self.logger = Logger(__name__, loggingLevel="debug")
        self.logger.debug("TableController logger has started.")

        self.addWindow = None
        self.modifyWindow = None

        self.columnNames = self.database.getColumns(tableName)
        self.tableData = self.database.getRawData(tableName)
        self.data = self.database.getData(tableName)
        self.model = TableModel()

        if len(self.data) == 0:
            messagebox.showwarning("Empty table", "This table has no records!")
            self.data["_"] = dict()
            self.data["_"]["_"] = "Empty table"
        else:
            for key, records in self.data.items():
                for col, value in records.items():
                    if isinstance(value, datetime.date):
                        self.data[key][col] = str(value)
        self.model.importDict(self.data)

        # Widgets
        self.content = Frame(self.themeWindow,
                             bg="#B7B9B8",
                             bd=4,
                             relief=RAISED,
                             width=self.themeWindow.winfo_width() - 80,
                             height=self.themeWindow.winfo_height() - 80)
        self.content.place(x=40, y=40)
        self.content.grid(row=0, column=0)
        self.content.bind("<<goback>>", lambda _: returnEvent(None))
        self.content.update()

        # Canvas with options menu
        self.topCanvas = Canvas(self.content,
                                bg="white",
                                bd=1,
                                relief=RAISED,
                                width=int(self.content.winfo_width()),
                                height=int(self.content.winfo_height() / 12))
        self.topCanvas.pack(fill='both', side=TOP)

        self.backButton = Button(self.topCanvas,
                                 text=" < ",
                                 command=self.back,
                                 width=9)
        self.backButton.pack(fill='both', side=LEFT)
        self.showButton = Button(self.topCanvas,
                                 text="Refresh table",
                                 command=self.refreshTable,
                                 width=22)
        self.showButton.pack(fill='both', side=LEFT)

        # Canvas with data
        self.middleFrame = Frame(self.content)
        self.middleFrame.pack(fill='both', side=TOP)
        self.table = CustomTable(self.middleFrame, model=self.model)
        self.table.show()

        # Canvas with DML buttons
        self.bottomCanvas = Canvas(self.content,
                                   bg="white",
                                   bd=1,
                                   relief=FLAT,
                                   width=int(self.content.winfo_width()),
                                   height=int(self.content.winfo_height() / 5))
        self.bottomCanvas.pack(fill='both', side=TOP)
        self.buttonAdd = Button(self.bottomCanvas,
                                text=" ADD ",
                                command=self.add,
                                width=24,
                                height=3,
                                bd=5)
        self.buttonAdd.pack(side=LEFT)
        self.buttonModify = Button(self.bottomCanvas,
                                   text=" MODIFY ",
                                   command=self.modify,
                                   width=25,
                                   height=3,
                                   bd=5)
        self.buttonModify.pack(side=LEFT)
        self.buttonDelete = Button(self.bottomCanvas,
                                   text=" DELETE ",
                                   command=lambda: self.delete(self.tableName),
                                   width=25,
                                   height=3,
                                   bd=5)
        self.buttonDelete.pack(side=LEFT)
示例#14
0
    def __init__(self, parent, top, opt):
        '''
        Constructor
        '''
        self.__parent = parent
        self.__top = top
        self.__opt = opt

        config = ConfigManager.ConfigManager.getInstance()

        # Period to delay between table refreshes
        self.__update_period = config.get('performance',
                                          'telem_table_update_period')

        #
        # Status updater singleton
        #
        self.__status_update = status_updater.StatusUpdater.getInstance()
        #
        # Instance the channel loader here and get all channel names
        #
        self.__channel_loader = channel_loader.ChannelLoader.getInstance()
        self.__channel_names_list = self.__channel_loader.getNameDict().values(
        )
        self.__channel_names_dict = self.__channel_loader.getNameDict()
        num_channels = len(self.__channel_loader.getNameDict())
        #
        # Container Frame
        f = Tkinter.Frame(parent)
        f.pack(side=Tkinter.TOP, anchor=Tkinter.N, fill=Tkinter.BOTH, expand=1)
        #
        # Create a model and connect it to a table on a canvas
        #
        self.__model = TableModel()
        self.__table = TableCanvas(f,
                                   model=self.__model,
                                   width=1200,
                                   height=800)
        # Set font
        font = config.get('tables', 'font')
        font_size = config.get('tables', 'font_size')
        self.__table.thefont = (font, font_size)
        self.__table.rowheight = int(font_size) + 5
        self.__table.createTableFrame()
        self.__table.redrawTable()

        # Mouse movement causes flyover text. This is not needed.
        # Unbind the appropriate event handler
        self.__table.unbind('<Motion>')

        #
        # Init. the table with a standard set of column headers
        #
        data = {'1': {'Channel': None}}
        self.__model.importDict(
            data)  # can import from a dictionary to populate model
        self.__table.addColumn('Id')
        self.__table.addColumn('Time')
        self.__table.addColumn('Value')
        for i in range(2, num_channels + 1):
            self.__table.addRow("%s" % i)
        self.__table.align = 'w'
        self.__table.redrawTable()
        self.__table.maxcellwidth = 500
        # Remove Row and cell highlight color
        self.__table.rowselectedcolor = None
        self.__table.selectedcolor = None
        # Rebind <B1-Motion> event to catch exception from column resize error
        self.__table.tablecolheader.unbind('<B1-Motion')
        self.__table.tablecolheader.bind('<B1-Motion>',
                                         self.__handle_column_motion)
        self.__table.tablecolheader.unbind('<ButtonRelease-1>')
        self.__table.tablecolheader.bind('<ButtonRelease-1>',
                                         self.__handle_column_release)

        # Make table read only
        self.__table.editable = False

        #
        # Pop-up Channel Telemetry Filter Selection and Active Filter Status.
        #
        f2 = Tkinter.LabelFrame(f,
                                text="Channel Telemetry Filtering:",
                                padx=5,
                                pady=5)
        f2.grid(row=2, column=0, columnspan=4, sticky=Tkinter.W + Tkinter.E)
        #
        b1 = Tkinter.Button(f2, text="Select Channels", command=self.__select)
        b1.pack(side=Tkinter.LEFT)
        # Hex value toggle
        self.__print_hex = Tkinter.IntVar()
        self.__print_hex.set(0)
        self.__hex_cb = Tkinter.Checkbutton(f2,
                                            text="Show Hex",
                                            variable=self.__print_hex,
                                            pady=5)
        self.__hex_cb.pack(side=Tkinter.RIGHT)
        #
        self.__e1 = Pmw.ScrolledField(f2,
                                      labelpos=Tkinter.W,
                                      labelmargin=0,
                                      text="None")
        self.__e1.pack(side=Tkinter.LEFT, expand=1, fill=Tkinter.X)
        self.__e1.component('entry').config(width=60)
        self.__e1.component('label').config(text='Active Filter Selected:')

        #
        # This is a channel id key to row value dictionary
        # built up over runtime to update table.
        #
        self.__row_dict = dict()
        self.__row_max = 1
        #
        # List of active channels to display
        self.__channel_names_list.sort()
        self.__channels_active_list = self.__channel_names_list
        self.__inactive_channels = []
示例#15
0
    def __init__(self, frame, usable_width, direction):

        self.deleted = False

        self.directed = direction

        self.ftable = Frame(frame.ftables)
        self.ft = Frame(self.ftable)
        self.fnp = Frame(self.ftable)

        #frame network properties
        if(usable_width > 1500)       :
            button_width=17
            button_width_plot=7
            font=('Verdana',9)
            image_button = 23
            list_fonts = list( tkFont.families() )
        elif(usable_width > 1200):
            button_width=15
            button_width_plot=6
            image_button = 28
            font=('Verdana',10)
        else:
            button_width=14
            button_width_plot=5
            image_button = 28
            font=('Verdana',8)


        if(usable_width > 1500):
            self.save_img = PhotoImage(file="save.gif")
            self.load_img = PhotoImage(file="load.gif")
            self.delete_img = PhotoImage(file="delete.gif")
        elif(usable_width > 1200):
            self.save_img = PhotoImage(file="save22.gif")
            self.load_img = PhotoImage(file="load22.gif")
            self.delete_img = PhotoImage(file="delete.gif")
        else:
            self.save_img = PhotoImage(file="save20.gif")
            self.load_img = PhotoImage(file="load20.gif")
            self.delete_img = PhotoImage(file="delete.gif")

        labelfnp_width = 10
        pos = 0
        # buttons area for the right panel of each graph
        self.buttonSave = Button(master=self.fnp, image=self.save_img, command=lambda num=frame.number_table: save_network(frame, num), relief=FLAT, width=image_button)
        self.buttonSave.image = self.save_img
        self.buttonSave.grid(row=0, column=0, pady=1, padx=1)

        self.buttonDelete = Button(master=self.fnp, image=self.delete_img, command=lambda num=frame.number_table: delete_network(frame, num), relief=FLAT, width=image_button)
        self.buttonDelete.image = self.delete_img
        self.buttonDelete.grid(row=pos, column=1, pady=1, padx=1)
        pos += 1

        self.plot_button = Button(master=self.fnp, text='Plot', command=lambda num=frame.number_table: plot_graph(frame, num), width=button_width)
        self.plot_button.grid(row=pos, column=0, columnspan=2, pady=2, padx=5)

        pos += 1

        self.netPro_label = Label(self.fnp, text="Network properties:", width=3*labelfnp_width, anchor=CENTER)
        self.netPro_label.grid(row=pos, column=0, columnspan=2, pady=2, padx=5)
        pos += 1
        self.number_nodesLabel = Label(self.fnp, text="Nodes: ", width=labelfnp_width, anchor=W)
        self.number_nodesLabel.grid(row=pos, column=0, pady=2, padx=5)
        self.number_nodes_str = StringVar()
        self.number_nodes_l = Label(self.fnp, textvariable=self.number_nodes_str, width=labelfnp_width, anchor=W)
        self.number_nodes_l.grid(row=pos, column=1, pady=2, padx=5)
        pos += 1

        self.number_arcsLabel = Label(self.fnp, text="Arcs: ", width=labelfnp_width, anchor=W)
        self.number_arcsLabel.grid(row=pos, column=0, pady=2, padx=5)
        self.number_arcs_str = StringVar()
        self.number_arcs_l = Label(self.fnp, textvariable=self.number_arcs_str, width=labelfnp_width, anchor=W)
        self.number_arcs_l.grid(row=pos, column=1, pady=2, padx=5)
        pos += 1

        self.number_diameterLabel = Label(self.fnp, text="Diameter: ", width=labelfnp_width, anchor=W)
        self.number_diameterLabel.grid(row=pos, column=0, pady=2, padx=5)
        self.diameter_str = StringVar()
        self.diameter_l = Label(self.fnp, textvariable=self.diameter_str, width=labelfnp_width, anchor=W)
        self.diameter_l.grid(row=pos, column=1, pady=2, padx=5)
        pos += 1

        self.assortativityLabel = Label(self.fnp, text="Assortativity: ", width=labelfnp_width, anchor=W)
        self.assortativityLabel.grid(row=pos, column=0, pady=2, padx=5)
        self.assortativity_str = StringVar()
        self.assortativity_l = Label(self.fnp, textvariable=self.assortativity_str, width=labelfnp_width, anchor=W)
        self.assortativity_l.grid(row=pos, column=1, pady=2, padx=5)
        pos += 1

        self.entropyLabel = Label(self.fnp, text="Entropy: ", width=labelfnp_width, anchor=W)
        self.entropyLabel.grid(row=pos, column=0, pady=2, padx=5)
        self.entropy_str = StringVar()
        self.entropy_l = Label(self.fnp, textvariable=self.entropy_str, width=labelfnp_width, anchor=W)
        self.entropy_l.grid(row=pos, column=1, pady=2, padx=5)
        pos += 1

        self.subgraph_ind_sub = Button(master=self.fnp, text='Induced subgraph', font=font, command=lambda num=frame.number_table: induced_subgraph(frame, num, usable_width), width=button_width)
        self.subgraph_ind_sub.grid(row=pos, column=0, pady=2, padx=5)

        pos+=1
        self.subgraph_ind_sub_lev = Button(master=self.fnp, text='Subgraph level', font=font, command=lambda num=frame.number_table: subgraph_levels(frame, num, usable_width), width=button_width)
        self.subgraph_ind_sub_lev.grid(row=pos, column=0, pady=2, padx=5)
        self.frame_but = Frame(self.fnp)



        #table part, create and fill columns
        self.columnNames = columnNames

        self.model = TableModel()
        self.model.data = {}
        for i in xrange(len(self.columnNames)):
            if(direction):
                if(columnNames[i] != "Information centrality"):
                    self.model.addColumn(self.columnNames[i])
            else:
                if(columnNames[i] != 'Eccentricity in'):
                    if(columnNames[i] != 'Vibrational centrality in'):
                        if(columnNames[i] != 'In degree'):
                            if(columnNames[i] != 'Total degree'):
                                self.model.addColumn(self.columnNames[i].replace(" out", "").replace("Out degree", "Degree"))

        if(usable_width > 1500):
            thefont=30
            rowheight=22

        else:
            thefont=5
            rowheight=20

        self.table = TableCanvas(self.ft, model=self.model, rows=0, cols=0, rowheaderwidth=0, rowheight=rowheight,
                                 cellbackgr='#ffffff', thefont=thefont, editable=False, showkeynamesinheader=True,
                                  autoresizecols=True, fill=X)

        self.model.addRow()
        self.table.createTableFrame()

        self.file_name = StringVar()
        self.file_name_label = Label(self.ftable, textvariable=self.file_name)

        self.file_name_label.pack(side=TOP)
        self.ft.pack(side=LEFT, expand=True, fill=X)
        self.fnp.pack(side=RIGHT)

        self.ftable.pack(expand=True, fill=X)

        #create the centrality list
        self.centrality = [[] for x in xrange(len(self.columnNames))]

        self.table.fontsize=thefont
        self.table.setFontSize()
        self.adj_matrix = None
        self.laplacian_psinv = None


        frame.canvas.config(scrollregion=frame.canvas.bbox("all"))