示例#1
0
 def __init__(self, create_account):
     self.create_account = create_account
     self.create_account.wm_title('Ajeet Bank')
     self.create_account.resizable(0, 0)
     name_lbl = Label(create_account, text="Name")
     name_lbl.grid(row=0, column=0)
     bal_lbl = Label(create_account, text="Balance")
     bal_lbl.grid(row=0, column=2)
     account_lbl = Label(create_account, text='Account No.')
     account_lbl.grid(row=1, column=0)
     address_lbl = Label(create_account, text="Address")
     address_lbl.grid(row=1, column=2)
     name_value = StringVar()
     self.name_entry = Entry(create_account, textvariable=name_value)
     self.name_entry.grid(row=0, column=1)
     self.name_entry.focus()
     self.name_entry.bind('<Return>',
                          lambda func1: self.balance_entry.focus())
     balance_value = StringVar()
     self.balance_entry = Entry(create_account, textvariable=balance_value)
     self.balance_entry.grid(row=0, column=3)
     self.balance_entry.bind('<Return>',
                             lambda func1: self.account_entry.focus())
     account_value = StringVar()
     self.account_entry = Entry(create_account, textvariable=account_value)
     self.account_entry.grid(row=1, column=1)
     self.account_entry.bind('<Return>',
                             lambda func1: self.address_entry.focus())
     address_value = StringVar()
     self.address_entry = Entry(create_account, textvariable=address_value)
     self.address_entry.grid(row=1, column=3)
     self.address_entry.bind('<Return>', lambda func1: btn.focus())
     btn = Button(create_account, text='Submit', command=self.add_member)
     btn.grid(row=3, column=1, columnspan=2)
     btn.bind('<Return>', lambda func1: self.add_member())
示例#2
0
文件: App.py 项目: Cyned/Snake
    def on_cleanup(self):
        """
        call the Tkinter widget when it is the player has lost the game.
        """

        def exit_(event):
            """
            destroy everything and exit the application.

            :param event: to call the function by some event (clicking on the button.
            """
            pygame.quit()
            root.destroy()

        root = Tk()
        root["bg"] = "#262626"

        label = Label(root, anchor=CENTER, height=3, width=50, relief=GROOVE, font="Calibri 14", bg="#E31E00",
                      fg="black")

        label["text"] = 'You lose!!!\nYou have received the {} level.\nCongratulations!!!'.format(self.game.level)
        button = Button(root, bg="black", activebackground="#E6E6E6", fg="white", relief=GROOVE, text="Exit", width=10)

        label.grid(row=0, column=0, columnspan=3)
        button.grid(row=1, column=2)

        button.bind("<Button-1>", exit_)
        root.mainloop()
示例#3
0
    def init(self):

        Label(self, text='Folder root:').grid(row=0, column=0, sticky='E')
        sf = Entry(self, textvariable=self.source_folder)
        sf.bind('<Return>', self.l_gen_pdf)
        sf.grid(row=0, column=1, columnspan=2, sticky='EW')
        sf.focus_set()

        Button(self, text='...', command=self.get_source_dir).grid(row=0, column=3)

        Label(self, text='Output (same folder if empty):').grid(row=1, column=0, sticky='E')
        of = Entry(self, textvariable=self.out_folder)
        of.bind('<Return>', self.l_gen_pdf)
        of.grid(row=1, column=1, columnspan=2, sticky='EW')

        Button(self, text='...', command=self.get_out_file).grid(row=1, column=3)

        Label(self, text='Quality:').grid(row=2, column=0, sticky='E')
        qf = Entry(self, textvariable=self.quality)
        qf.bind('<Return>', self.l_gen_pdf)
        qf.grid(row=2, column=1)

        Label(self, text='Optimize:').grid(row=2, column=2, sticky='E')
        pf = Checkbutton(self, variable=self.optimize)
        pf.grid(row=2, column=3)

        gb = Button(self, text='Generate', command=self.l_gen_pdf)
        gb.bind('<Return>', self.l_gen_pdf)
        gb.grid(row=3, column=0, columnspan=4, sticky='EW')
示例#4
0
    def init_ui(self):

        img = PhotoImage(file='images/save.gif')
        lbl = Label(self.tools, relief='raised', image=img)
        lbl.bind('<Button-1>', self.save_click)
        self.root.bind('<Control-s>', self.save_click)
        lbl.pack(padx=3, pady=2)
        lbl.img = img
        img = PhotoImage(file='images/open.gif')

        lbl = Label(self.tools, relief='raised', image=img)
        lbl.bind('<Button-1>', self.open_click)
        self.root.bind('<Control-o>', self.open_click)
        lbl.pack(padx=3, pady=2)
        lbl.img = img
        img = PhotoImage(file='images/clear.gif')

        lbl = Label(self.tools, relief='raised', image=img)
        lbl.bind('<Button-1>', self.new_click)
        self.root.bind('<Control-n>', self.new_click)
        lbl.pack(padx=3, pady=2)
        lbl.img = img

        btn = Button(self.pallete, background='red', foreground='red')
        btn.bind('<Button-1>', self.color_choose)
        btn.pack()

        for tool in tools_list:
            img = PhotoImage(file=tool.get_picture_filename())
            lbl = Label(self.tools, relief='raised', image=img)
            lbl.img = img
            lbl.tool = tool
            lbl.bind('<Button-1>', self.select_tool)
            lbl.pack(padx=3)
示例#5
0
class _Testdialog:
    def __init__(self, master):
        frame = Frame(master, width=300, height=300)
        frame.pack()
        self.master = master
        self.x, self.y, self.w, self.h = -1, -1, -1, -1

        self.Button_1 = Button(text="Test Dialog", relief="raised", width="15")
        self.Button_1.place(x=84, y=36)
        self.Button_1.bind("<ButtonRelease-1>", self.Button_1_Click)

    def Button_1_Click(self, event):  #click method for component ID=1
        fileL = [
            'c:/myhome/file 1',
            'd:/really/deep/path/to/file/Really_Important_File',
            'e:/yesterdays/news/YesterdayAtNoon'
        ]
        for i in range(30):
            fileL.append('f:/dummy%i/area%i/Dummy_File_%i' % (i, i, i) +
                         'x' * i)
        dialog = _select_recent_file(self.master,
                                     "Pick Recent File",
                                     dialogOptions={'fileL': fileL})
        print('===============Result from Dialog====================')
        print(dialog.result)
        print('=====================================================')
示例#6
0
def searchDef():
    def execSearchDef(e):
        textarea.tag_remove('sel', 1.0, END)

        search_str = search_entry.get()
        start = '1.0'
        while 1:
            start = textarea.search(search_str, start, stopindex=END)
            if start:
                end = '{}+{}c'.format(start, len(search_str))
                textarea.tag_add('sel', start, end)
                start = end
            else:
                break

    topsearch = Toplevel(root)
    topsearch.title(string="查找")
    topsearch.geometry('300x30+200+250')
    search_label = Label(topsearch, text='查找')
    search_label.grid(row=0, column=0, padx=5)
    search_entry = Entry(topsearch, width=20)
    search_entry.grid(row=0, column=1, padx=5)
    search_btn = Button(topsearch, text="查找")
    search_btn.grid(row=0, column=2)
    search_btn.bind('<Button-1>', execSearchDef)
示例#7
0
def GamePage():
    window = tkinter.Toplevel()
    #Setting up the grid

    col_count = 9
    row_count = 15

    for col in range(0, col_count):
        window.grid_columnconfigure(col, minsize=x / col_count)

    for row in range(0, row_count):
        window.grid_rowconfigure(row, minsize=y / row_count)
    # Grid setter ended

    window.title("Games")

    home = Button(window,
                  text="<= Home",
                  command=lambda: VidStreamExit(window))
    home.grid(column=0, row=0, sticky='n,e,w,s')

    snake = Button(window, text='Snake', command=SnakeGame)
    snake.grid(column=1, columnspan=2, row=2, sticky='n,e,w,s')
    snake.bind("<Enter>",
               lambda event, window=window: displaylogosnake(window))

    window.geometry(str(x) + 'x' + str(y))
    window.mainloop()
示例#8
0
class _Testdialog:
    """Only used to test dialog from CLI"""
    def __init__(self, master):
        """Initialize CLI test GUI"""
        frame = Frame(master, width=300, height=300)
        self.master = master
        self.x, self.y, self.w, self.h = -1,-1,-1,-1

        self.Button_1 = Button(frame, text="My Popup", relief="raised", width="15")
        self.Button_1.pack()
        self.Button_1.bind("<ButtonRelease-1>", self.Button_1_Click)

        statframe = Frame(frame)
        master.statusMessage = StringVar()
        master.statusMessage.set('Welcome')
        self.statusbar = Label(statframe, textvariable=master.statusMessage,
                               bd=1, relief=SUNKEN, anchor=W)
        self.statusbar.pack(anchor=SW, fill=X, side=BOTTOM)
        statframe.pack(anchor=SW, fill=X, side=BOTTOM)
        self.dx = 30
        self.dy = 30

        frame.pack()

        self.dialog = None

    # pylint: disable=W0613
    def Button_1_Click(self, event): #click method for component ID=1
        """Launch Select_Py_Version for CLI testing."""
        self.dialog = SatelliteWindow(self, self.master, "Test Dialog", dx=self.dx, dy=self.dy)
        self.dx += 30
        self.dy += 30
示例#9
0
def MAIN(event):

    global root1
    root1=Tk()
    width=700
    height=250
    screen_width = root1.winfo_screenwidth()
    screen_height = root1.winfo_screenheight()

    x = (screen_width/2) - (width/2)
    y = (screen_height/2) - (height/2)
    root1.geometry('%dx%d+%d+%d' % (width, height, x, y))
    
    root1.resizable(0,0)
    root1.config(bg="#220047")
    root1.title("Welcome")
    
    

    filename = PhotoImage(file ="welcome.png")
    background_label = Label(image=filename)
    background_label.place(x=0, y=0, relwidth=1, relheight=1)

    login=Button(root1,text="Log In",font=("roboto",30),bg="#CE9141",fg="#220047",activeforeground="#b2995d",activebackground="#220047",height=1,width=10)
    login.place(x=60,y=120)
    login.bind("<Button-1>",login1)


    signup1=Button(root1,text="Sign Up",font=("roboto",30),bg="#CE9141",fg="#220047",activeforeground="#b2995d",activebackground="#220047",height=1,width=10)
    signup1.place(x=390,y=120)
    signup1.bind("<Button-1>",signup)

    root1.mainloop()
示例#10
0
    def __init__(self):
        self.fen = Tk()
        self.chaine = StringVar()
        self.chaine.set("")
        self.lbl = Label(self.fen, textvariable=self.chaine,
                         height=3)  #, width=100, height=50)
        self.lbl.pack(side=TOP)

        self.btn = Button(self.fen, text="ENTER", height=3)
        self.btn.pack(side=BOTTOM, expand=True, fill="both")
        self.btn.bind("<Button-1>", self.handle_enter)

        self.frame_op = Frame(self.fen)
        self.frame_op.pack(side=RIGHT)

        self.btn_zero = Button(self.fen, text="0")
        self.btn_zero.pack(side=BOTTOM, expand=True, fill="both")
        self.btn_zero.bind("<Button-1>", self.handle_number)

        self.frame_num = Frame(self.fen)
        self.frame_num.pack()
        for i, op in enumerate(["+", "-", "*", "/"]):
            btn = Button(self.frame_op, text=op, width=5, height=3)
            btn.pack()
            btn.bind("<Button-1>", self.handle_op)

        for i in range(3):
            for j in range(3):
                btn = Button(self.frame_num,
                             text=f"{(10-3*(i+1))+j}",
                             width=5,
                             height=3)
                btn.grid(column=j, row=i)
                btn.bind("<Button-1>", self.handle_number)
class addtransaction:
    def __init__(self):
        self.window = Tk()
        self.mainframe = Frame(self.window)

        self.instructionL = Label(
            self.mainframe,
            text="Please fill in the fields\nwith appropriate values. ")
        self.cashierL = Label(self.mainframe, text="Cashier: ")
        self.foodorderedL = Label(self.mainframe, text="Food Ordered: ")
        self.earningL = Label(self.mainframe, text="Earning: ")

        self.cashierI = Entry(self.mainframe)
        self.foodorderedI = Entry(self.mainframe)
        self.earningI = Entry(self.mainframe)

        self.okayB = Button(self.mainframe, text="OKAY")
        self.cancelB = Button(self.mainframe,
                              text="CANCEL",
                              command=self.cancel)
        self.mainframe.grid(row=0,
                            column=0,
                            columnspan=2,
                            sticky=W + E + N + S)
        self.mainframe.propagate(0)

        self.instructionL.grid(row=0, column=0, columnspan=2)
        self.cashierL.grid(row=1, column=0)
        self.foodorderedL.grid(row=2, column=0)
        self.earningL.grid(row=3, column=0)

        self.cashierI.grid(row=1, column=1)
        self.foodorderedI.grid(row=2, column=1)
        self.earningI.grid(row=3, column=1)

        self.okayB.grid(row=8, column=0)
        self.okayB.bind("<Button-1>", self.okayE)
        self.cancelB.grid(row=8, column=1)

    def cancel(self):
        self.window.destroy()

    def okayE(self, event):
        info = []
        date = str(datetime.datetime.now())
        cashier = self.cashierI.get()
        foodordered = self.foodorderedI.get()
        earning = self.earningI.get()
        try:
            info.append(date)
            info.append(cashier)
            info.append(foodordered)
            info.append(earning)
            trans = tuple(info)
            QF.addTransaction(trans)
            self.window.destroy()
        except:
            messagebox.showerror("Error",
                                 "Something is Wrong\nCheck your input!")
            self.window.destroy()
示例#12
0
def confirm_window_button(window, user, class_type, text, entries, row):
    ClassTypeWin = import_ClassTypeWin(class_type)
    # Directs from the add object window to the confirm add object window
    button = Button(window, text=text, font=user.large_font, bg=user.button_bg_colour,
                    command=lambda: Window.confirm_window(window, user, class_type, entries))
    button.bind('<Return>', lambda e: Window.confirm_window(window, user, class_type, entries))
    button.grid(row=row, column=0, columnspan=2, sticky='nsew', padx=user.padx, pady=user.pady)
示例#13
0
 def playerbox(event, player):
     
     togglebutton = event.widget
     
     bleh = Label(self, cursor = 'hand1',
                  highlightthickness = 0, bd = 0,
                  image = self.emptylist[togglebutton.slot -1])
     self.canvas.create_window((togglebutton.winfo_x() + 86,
                                togglebutton.winfo_y() + 122),
                               window = bleh,
                               tags = ('p{}empty'
                                       .format(togglebutton.slot),
                                      'p{}'
                                       .format(togglebutton.slot)))
     namebutton = TkButton(self, text = 'SELECT A NAME',
                           compound = CENTER, 
                           bd = 0, fg = 'white',
                           font = ('Arial Black', 8),
                           highlightthickness = 0, 
                           cursor = 'hand2',
                           highlightbackground = 'black',
                           image = self.nameboxpreimage)
     namebutton.bind('<Button-1>',
                     lambda event:
                     nameselectbox(self, togglebutton,
                                   namebutton, player))
     self.canvas.create_window((togglebutton.winfo_x() + 90,
                                togglebutton.winfo_y() + 185),
                               window = namebutton,
                               tags = ('namebutton',
                                       'p{}'
                                       .format(togglebutton.slot)))
     togglebutton.lift()
     self.canvas.tag_raise('p{}coin'.format(togglebutton.slot))
示例#14
0
    def initUI(self):
        self.style = Style()
        self.style.theme_use('clam')
        self.acts = []
        self.selected = []
        self.scDir = 'Scenarios/'

        listFrame = Frame(self)
        listFrame.pack(pady=15)

        self.lb = Listbox(listFrame)
        self.lb.grid(row=0, column=0, columnspan=2, padx=5)
        self.lb.bind("<<ListboxSelect>>", self.onSelect)
        self.updateList()

        deleteBtn = Button(listFrame, text='Delete')
        deleteBtn.grid(row=0, column=2, padx=1)
        deleteBtn.bind('<ButtonRelease-1>', self.onDeleteClick)

        self.lbl = Label(self, text='Scenario Name: ')
        self.lbl.pack()
        self.scName = Entry(self, width=25)
        self.scName.pack()
        self.recBtn = Button(self, text='Record', width=10, height=1)
        self.recBtn.pack(pady=10)
        self.recBtn.bind('<ButtonRelease-1>', self.onButtonClick)
示例#15
0
def ok():
    if transform(password.get()) == "ªĄĦłĚļŎŖĞľĦłIJňĪńĊĴĎĶŒŘĞľ":
        lb.place(x=-200, y=-200)
        password.place(x=-200, y=-200)
        b.place(x=-200, y=-200)
        t = 1
        users = os.listdir()
        users.remove("telegramm.py")
        for i in users:
            if not os.path.isdir(i):
                users.remove(i)
        Button(root,
               text="Quit",
               font="Arial 20 bold",
               bg="white",
               bd=4,
               command=lambda: Thread(target=close).start()).place(x=10,
                                                                   y=10,
                                                                   width=195,
                                                                   height=45)
        Button(root,
               text="Save",
               font="Arial 20 bold",
               bg="white",
               bd=4,
               command=save_new).place(x=10, y=60, width=195, height=45)
        for i in users:
            temp = Button(root, text=i, font="Arial 20 bold", bg="white", bd=4)
            temp.place(x=10 + (t // 10) * 200,
                       y=60 + (t % 10) * 50,
                       width=195,
                       height=45)
            temp.bind("<1>", choose)
            t += 1
示例#16
0
    def draw(self, root):
        frame = Frame(root, bd=5)

        game_label = Label(
            frame,
            text='Sea Battle',
            bg='#c509d6',
            fg='black',
            height=2,
            width=20
        )

        start_btn = Button(
            frame,
            text='Start',
            bg='white',
            fg='black',
            height=2,
            width=20,
            cursor='hand1'
        )
        start_btn.bind(
            '<Button-1>',
            make_click_callback(self.userSocket, self.controller)
        )
        game_label.pack(fill=X, pady=(20, 20))
        start_btn.pack(fill=BOTH)
        frame.grid(row=0, column=0, padx=(40, 40), pady=(40, 60))
示例#17
0
def error4():
    global root9
    root9=Tk()
    root9.resizable(0,0)
    root9.title("Error")
    root9.config(bg="#220047")
                 
    width=450
    height=230
    screen_width = root9.winfo_screenwidth()
    screen_height = root9.winfo_screenheight()
    x = (screen_width/2) - (width/2)
    y = (screen_height/2) - (height/2)
    root9.geometry('%dx%d+%d+%d' % (width, height, x, y))
 
    errortxt1=Label(root9,text="Error!",font=("georgia",30),bg="#220047",fg="#CE9141")
    errortxt1.place(x=162,y=7)

    errortxt2=Label(root9,text="No field should be left empty! Make sure you have filled \n the following fields correctly: \n 1.Username \n 2. Fullname ",font=("georgia",12),bg="#220047",fg="#CE9141")
    errortxt2.place(x=25,y=65)

    bt2=Button(root9,text="Try Again",font=("georgia",20),bg="#CE9141",fg="#220047",activebackground="#220047",activeforeground="#CE9141")
    bt2.place(x=160,y=155)
    bt2.bind("<Button-1>",tryagain4)
    root9.mainloop()
示例#18
0
def pureregister(event):
    global Fullname
    global Email
    global Username
    global Password
    global root3
    root3=Tk()
    root3.resizable(0,0)
    root3.config(bg="#220047")
    root3.title("Registration Form")
    
    width=500
    height=450
    screen_width = root3.winfo_screenwidth()
    screen_height = root3.winfo_screenheight()
    x = (screen_width/2) - (width/2)
    y = (screen_height/2) - (height/2)
    root3.geometry('%dx%d+%d+%d' % (width, height, x, y))
    
    Fullname=StringVar()
    Email=StringVar()
    Username=StringVar()
    Password =StringVar()
    
    signup_1=Label(root3, text="Sign Up",fg="#CE9141",bg="#220047",width=20,font=("georgia", 40))
    signup_1.place(x=-50,y=20)
    
    back=Button(root3,text="Back",font=("georgia",10),width=10,fg='#220047',bg='#CE9141',activeforeground="#CE9141",activebackground="#220047")
    back.place(x=400,y=10)
    back.bind("<Button-1>",back1)
    
    name=Label(root3, text="FullName",fg="#CE9141",bg="#220047",width=20,font=("georgia", 15))
    name.place(x=-10,y=125)

    input1=Entry(root3,textvar=Fullname,width=40)
    input1.place(x=200,y=130)

    email= Label(root3, text="Email",fg="#CE9141",bg="#220047",width=20,font=("georgia", 15))
    email.place(x=-29,y=175)
    
    input2 = Entry(root3,textvar=Email,width=40)
    input2.place(x=200,y=180)

    user1= Label(root3,text="Username",fg="#CE9141",bg="#220047",width=20,font=("georgia", 15))
    user1.place(x=-10,y=225)

    input3=Entry(root3,textvar=Username,width=40)
    input3.place(x=200,y=230)

    pass1= Label(root3, text="Password",fg="#CE9141",bg="#220047",width=20,font=("georgia", 15))
    pass1.place(x=-10,y=275)

    input4=Entry(root3,textvar=Password,width=40,show="**")
    input4.place(x=200,y=280)

    submit1=Button(root3,text='Submit',font=("georgia",20),width=10,fg='#220047',bg='#CE9141',activeforeground="#CE9141",activebackground="#220047",height=1)
    submit1.place(x=165,y=345)
    submit1.bind("<Button-1>",datauser)

    root3.mainloop()
示例#19
0
class Location_Tracker:
    def __init__(self, App):
        self.window = App
        self.window.title("Phone number Tracker")
        self.window.geometry("500x400")
        self.window.configure(bg="#3f5efb")
        self.window.resizable(False, False)
        Label(App, text="Enter a phone number",fg="white", font=("Times", 20), bg="#3f5efb").place(x=150, y=30)
        self.phone_number = Entry(App, width=16, font=("Arial", 15), relief="flat")
        self.track_button = Button(App, text="Track Country", bg="#22c1c3", relief="sunken")
        self.country_label = Label(App,fg="white", font=("Times", 20), bg="#3f5efb")
        self.phone_number.place(x=170, y=120)
        self.track_button.place(x=200, y=200)
        self.country_label.place(x=100, y=280)
        self.track_button.bind("<Button-1>", self.Track_location)

    def Track_location(self, event):
        phone_number = self.phone_number.get()
        country = "Country is Unknown"
        if phone_number:
            tracked = pycountry.countries.get(alpha_2=phone_country(phone_number))
            print(tracked)
            if tracked:
                country = tracked.official_name
        self.country_label.configure(text=country)
示例#20
0
def test3():
    root = Tk()
    root.title('Test 3 - Login')

    labelUsername = Label(root, text='Username:'******'Password:'******'Remember me')

    if mode == 0:
        buttonLogin = Button(root, text='Login', fg='red', command=login)
    elif mode == 1:
        buttonLogin = Button(root, text='Login', fg='red')
        buttonLogin.bind('<Button-1>', login)  # <Button-1>: Left click

    labelUsername.grid(row=0, column=0, sticky=E)
    labelPassword.grid(row=1, column=0, sticky=E)
    entryUsername.grid(row=0, column=1)
    entryPassword.grid(row=1, column=1)
    rememberCheck.grid(row=2, column=0, columnspan=2)
    buttonLogin.grid(row=3, column=0, columnspan=2)

    root.mainloop()
class RegistrationFormDraw:
    def __init__(self):
        self.window = Tk()
        self.window.title('Minechat welcome!')
        self.window.geometry('700x200')
        self.window_frame = Frame()
        self.window_frame.pack()
        self.lbl = Label(self.window_frame, text="Введите имя")
        self.lbl.pack(pady=10)

        self.entry = Entry(width=70)
        self.entry.focus()
        self.entry.pack(pady=10)

        self.btn = Button(text="Зарегистрироваться")
        self.btn.pack(pady=10)
        self.btn.bind('<Button-1>', lambda event: self.callback())
        self.window.mainloop()

    def callback(self):
        new_username.append(sanitize_message(self.entry.get()))
        self.entry.forget()
        self.close()

    def close(self):
        self.window.destroy()
        self.window.quit()
示例#22
0
def error3():
    global root7
    root7=Tk()
    root7.resizable(0,0)
    root7.title("Error")
    root7.config(bg="#220047")
    
    width=450
    height=240
    screen_width = root7.winfo_screenwidth()
    screen_height = root7.winfo_screenheight()
    x = (screen_width/2) - (width/2)
    y = (screen_height/2) - (height/2)
    root7.geometry('%dx%d+%d+%d' % (width, height, x, y))
 
    errortxt1=Label(root7,text="Error!",font=("georgia",30),bg="#220047",fg="#CE9141")
    errortxt1.place(x=165,y=7)

    errortxt2=Label(root7,text="Please fulfill the following requirements for a strong password: "******"georgia",10),bg="#220047",fg="#CE9141")
    errortxt2.place(x=30,y=65)

    errortxt3=Text(root7,font=("georgia",10),height=4,width=45,bg="#220047",fg="#CE9141")
    errortxt3.place(x=20,y=100) 
    errortxt3.insert(END," 1.Password should be atleast 8 character long. \n 2.Must contain atleast one uppercase and lowercase character. \n 3.No special characters are allowed. \n 4. No whitespaces are allowed. ")

    bt2=Button(root7,text="Try Again",font=("georgia",20),bg="#CE9141",fg="#220047",activebackground="#220047",activeforeground="#CE9141")
    bt2.place(x=250,y=180)
    bt2.bind("<Button-1>",tryagain3)

    bt1=Button(root7,text="Get Password",font=("georgia",20),bg="#CE9141",fg="#220047",activebackground="#220047",activeforeground="#CE9141",command=getpass)
    bt1.place(x=50,y=180)
 

    root7.mainloop()
示例#23
0
 def __init__(self, root, btns):
     for btnname, btnfunc in btns.items():
         button = Button(root, text=btnname)
         self.buttons.append(button)
         button.bind("<Button-1>",
                     lambda event, f=btnfunc: self.sink_button(event, f))
         button.pack(side=LEFT)
示例#24
0
def error2(): 
    global root6       
    root6=Tk()
    root6.resizable(0,0)
    root6.title("Error")
    root6.config(bg="#220047")
    
    width=450
    height=200
    screen_width = root6.winfo_screenwidth()
    screen_height = root6.winfo_screenheight()
    x = (screen_width/2) - (width/2)
    y = (screen_height/2) - (height/2)
    root6.geometry('%dx%d+%d+%d' % (width, height, x, y))
 
    errortxt1=Label(root6,text="Error!",font=("georgia",30),bg="#220047",fg="#CE9141")
    errortxt1.place(x=165,y=7)
    
    errortxt2=Label(root6,text="The email id  entered is not valid , please enter a valid email id  ",font=("georgia",10),bg="#220047",fg="#CE9141")
    errortxt2.place(x=30,y=70)
  
    bt2=Button(root6,text="Try Again",font=("georgia",20),bg="#CE9141",fg="#220047",activebackground="#220047",activeforeground="#CE9141")
    bt2.place(x=165,y=120)
    bt2.bind("<Button-1>",tryagain2)

    root6.mainloop()
def GetAnswer(event):
    global clamp_1, clamp_2, ClampsWindow
    if clamp_num > 2:
        ClampsWindow = Toplevel(Resistor)
        ClampsWindow.grab_set()
        ClampsWindow.focus_force()
        ClampsWindow.minsize(width=200, height=160)
        ClampsWindow.maxsize(width=200, height=160)
        ClampsWindow.title('Choose clamps')

        clamp_1_info = Label(ClampsWindow,
                             text='Enter the number\nof the first clamp:')
        clamp_1_info.place(x=0, y=0, width=200, height=40)

        clamp_1 = Entry(ClampsWindow)
        clamp_1.place(x=0, y=40, width=200, height=20)

        clamp_2_info = Label(ClampsWindow,
                             text='Enter the number\nof the second clamp:')
        clamp_2_info.place(x=0, y=60, width=200, height=40)

        clamp_2 = Entry(ClampsWindow)
        clamp_2.place(x=0, y=100, width=200, height=20)

        clamp_OK_but = Button(ClampsWindow, text='OK')
        clamp_OK_but.place(x=0, y=120, width=200, height=40)
        clamp_OK_but.bind('<Button-1>', clamp_OK_action)
    else:
        GetAnswer_in_GetAnswer(0, 1)
示例#26
0
def createplay(event):
    global name12
    global root12
    root12=Tk()
    root12.resizable(0,0)
    root12.title("Create Playlist")
    root12.config(bg="#220047")
    width=400
    height=150
    screen_width = root12.winfo_screenwidth()
    screen_height = root12.winfo_screenheight()
    x = (screen_width/2) - (width/2)
    y = (screen_height/2) - (height/2)
    root12.geometry('%dx%d+%d+%d' % (width, height, x, y))
    
    name12=StringVar(root12)
    todo1=Label(root12,text="Name your playlist",font=("roboto",20),bg="#220047",fg="#CE9141")
    todo1.pack()
    
    input0=Entry(root12,textvar=name12,width=50)
    input0.place(x=50,y=60)
    
    submit0=Button(root12,text='Submit',font=("georgia",15),width=10,fg='#220047',bg='#CE9141',activeforeground="#CE9141",activebackground="#220047",height=1,)
    submit0.place(x=135,y=100)
    submit0.bind("<Button-1>",savelist)
    
    root12.mainloop()
示例#27
0
 def add_celda_tablero(self, celda, left_click_action, right_click_action):
     button = Button(self.frame_tablero, bg=Color.CELDA_DEFAULT, activebackground=Color.CELDA_DEFAULT_OVER)
     button.bind("<Button-1>", left_click_action)
     button.bind("<Button-3>", right_click_action)
     button.config(height=1, width=1)
     button.grid(row=celda.posicion_x, column=celda.posicion_y)
     return button
示例#28
0
文件: gui.py 项目: sounditbox/reversy
    def __init__(self, root, func):
        self.choosing_frame = Frame \
            (root, height=60, width=100, bg='lightblue')
        self.var = IntVar()
        rbutton1 = Radiobutton(self.choosing_frame,
                               text='Easy',
                               variable=self.var,
                               value=1,
                               bg='lightblue')
        rbutton2 = Radiobutton(self.choosing_frame,
                               text='Hard',
                               variable=self.var,
                               value=2,
                               bg='lightblue')
        rbutton3 = Radiobutton(self.choosing_frame,
                               text='Random',
                               variable=self.var,
                               value=3,
                               bg='lightblue')
        button1 = Button(self.choosing_frame, text='Ok', bg='lightblue')
        rbutton1.select()
        rbutton1.pack(side='left')
        rbutton2.pack(side='left')
        rbutton3.pack(side='left')
        button1.pack(side='left')

        button1.bind('<1>', lambda e: func())
示例#29
0
def load_prompt_frame(prompt, table):
    frame = Frame(prompt, name="entry_form")
    frame.grid(row=0, column=0, padx=10, pady=10, sticky=W)
    url_alias_label = Label(frame, text=literals["url_alias_label"])
    url_alias_label.grid(row=0, column=0, sticky=W)
    url_alias_entry = Entry(frame,
                            textvariable=dto.url_alias,
                            name="url_alias_entry")
    url_alias_entry.grid(row=0, column=1, sticky=W)
    url_to_check_label = Label(frame, text=literals["url_to_check_label"])
    url_to_check_label.grid(row=1, column=0)
    url_to_check_entry = Entry(frame,
                               textvariable=dto.url_to_check,
                               name="url_to_check_entry")
    url_to_check_entry.grid(row=1, column=1)
    button_frame = Frame(prompt)
    button_frame.grid(row=1)
    acc_btn = Button(button_frame, text=literals["acc_btn"])
    acc_btn.grid(row=0, column=0)
    acc_btn.bind("<Button-1>",
                 lambda event, prmt=prompt, tbl=table: acc_btn_click_event(
                     event, prmt, tbl))
    cl_btn = Button(button_frame, text=literals["cl_btn"])
    cl_btn.grid(row=0, column=1)
    cl_btn.bind("<Button-1>",
                lambda event, prmt=prompt: cl_btn_click_event(event, prmt))
示例#30
0
文件: gui.py 项目: sounditbox/reversy
 def __init__(self, root, switch_mode):
     self.choosing_frame = Frame \
         (root, height=60, width=100, bg='lightblue')
     self.var = IntVar()
     rbutton1 = Radiobutton(self.choosing_frame,
                            text='PvE',
                            variable=self.var,
                            value=1,
                            bg='lightblue')
     rbutton2 = Radiobutton(self.choosing_frame,
                            text='PvP',
                            variable=self.var,
                            value=2,
                            bg='lightblue')
     rbutton3 = Radiobutton(self.choosing_frame,
                            text='EvE',
                            variable=self.var,
                            value=3,
                            bg='lightblue')
     button = Button(self.choosing_frame, text='Ok', bg='lightblue')
     rbutton1.select()
     rbutton1.pack(side='left')
     rbutton2.pack(side='left')
     rbutton3.pack(side='left')
     button.pack(side='left')
     button.bind('<1>', switch_mode)
示例#31
0
class _Testdialog:
    def __init__(self, master):
        frame = Frame(master, width=300, height=300)
        frame.pack()
        self.master = master
        self.x, self.y, self.w, self.h = -1, -1, -1, -1

        self.Button_1 = Button(text="Test Dialog", relief="raised", width="15")
        self.Button_1.place(x=84, y=36)
        self.Button_1.bind("<ButtonRelease-1>", self.Button_1_Click)

    def Button_1_Click(self, event):  #click method for component ID=1
        desc = 'radius of curvature just downstream of throat (Rdownstream / Rthrt) this could be a very long description and we would just need to wrap it.'
        value = 2.3  #False
        dialog = _get_value_v2(self.master,
                               "Test Dialog",
                               dialogOptions={
                                   'name': 'eps',
                                   'value': value,
                                   'desc': desc,
                                   'val_type': type(value)
                               })
        print('===============Result from Dialog====================')
        print(dialog.result)
        print('=====================================================')
示例#32
0
class StartPage(Frame):

    def __init__(self, master=None, controller=None):

        super().__init__(master=master)

        self.leaf_image = Image.open("public/leaf.png").resize((200, 200))
        self.leaf = ImageTk.PhotoImage(self.leaf_image)

        self.search_icon = Image.open("public/search.png").resize((20, 20))
        self.search = ImageTk.PhotoImage(self.search_icon)

        self.save_icon = Image.open("public/save.png").resize((20, 20))
        self.save = ImageTk.PhotoImage(self.save_icon)

        self.heading = Label(master=self, text="Treco", anchor="c", fg="#0F8100", font=("Avenir Next", "50"))
        self.heading.pack(pady=(40, 0))

        self.image_holder = Label(master=self, image=self.leaf)
        self.image_holder.pack(pady=(20, 0))

        self.brief = Label(master=self, text=about, anchor="c", fg="#106A04", wraplength=450, font=(("Avenir Next", "15")))
        self.brief.pack(pady=(100,0))

        self.search_button = Button(master=self, text="Search  ", fg="#000000", width=40, font=(("Avenir Next", "15")), image=self.search, compound="right", command=lambda: controller.show_frame(1))
        self.search_button.bind("<Enter>", lambda e: e.widget.config(fg="#8100ff"))
        self.search_button.bind("<Leave>", lambda e: e.widget.config(fg="#000000"))
        self.search_button.pack(pady=(40, 0), ipadx=15, ipady=8)

        self.saved_button = Button(master=self, text="Saved  ", fg="#000000", width=40, font=(("Avenir Next", "15")), image=self.save, compound="right", command=lambda: controller.show_frame(3))
        self.saved_button.bind("<Enter>", lambda e: e.widget.config(fg="#8100ff"))
        self.saved_button.bind("<Leave>", lambda e: e.widget.config(fg="#000000"))
        self.saved_button.pack(pady=(10, 0), ipadx=15, ipady=8)
class LoginGui(object):
    def __init__(self, root):
        self.welcome_text = 'Prihlaseny' if User.is_loaded_session() else ""

        self.response_text = StringVar(root, value=self.welcome_text)

        self.top_frame = Frame(root, width=400, height=400)

        self.middle_frame = Frame(root, width=300, height=300)

        self.top_frame.pack(fill="both", expand=True, padx=20, pady=20)
        self.middle_frame.place(in_=self.top_frame, anchor='c', relx=.5, rely=.5)

        self.l_email = Label(self.middle_frame, text="Email")
        self.e_email = Entry(self.middle_frame)

        self.l_pass = Label(self.middle_frame, text="Password")
        self.e_pass = Entry(self.middle_frame, show="*")

        self.l_sign_up = Label(self.middle_frame, text="Sign up", fg='blue', cursor='hand2')

        self.l_req_result = Label(self.middle_frame, textvariable=self.response_text)

        self.b_submit = Button(self.middle_frame, text="Login")

        self.l_email.grid(row=0, sticky=E)
        self.e_email.grid(row=0, column=1)
        self.l_pass.grid(row=1, column=0, sticky=E)
        self.e_pass.grid(row=1, column=1)
        self.b_submit.grid(row=2, column=1, sticky=E)
        self.l_sign_up.grid(row=3, column=1, sticky=E)
        self.l_req_result.grid(row=4)

        self.l_sign_up.bind('<Button-1>', self.sing_up_callback)
        self.b_submit.bind('<Button-1>', self.login)

        self.root = root
        self.root.mainloop()

    def login(self, event):
        response = User.login(self.e_email.get(), self.e_pass.get())
        self.response_text.set(response)
        if User.is_loaded_session():
            self.root.destroy()

    @staticmethod
    def sing_up_callback(event):
        webbrowser.open_new(Config.SIGN_UP_URL)

    @staticmethod
    def show_login():
        root = tkinter.Tk(className="Productivity optimizer")
        LoginGui(root)
        root.mainloop()
class AddRestrictionDialog:
    def __init__(self, parent):
        self.parent = parent
        self.gui = Toplevel(parent.guiRoot)
        self.gui.grab_set()
        self.gui.focus()

        self.gui.columnconfigure(0, weight=1)
        self.gui.columnconfigure(1, weight=1)

        Label(self.gui, text="Enzyme:").grid(row=0, column=0, sticky="e", padx=5)
        self.entryEnzyme = Entry(self.gui)
        self.entryEnzyme.grid(row=0, column=1, sticky="w", padx=5, pady=10)
        self.frameButtonGroup = Frame(self.gui)
        self.frameButtonGroup.grid(row=1, column=0, columnspan=2, pady=10)
        self.buttonOK = Button(self.frameButtonGroup, text=" OK ")
        self.buttonCancel = Button(self.frameButtonGroup, text=" Cancel ")
        self.buttonOK.grid(row=0, column=1, sticky="w", padx=5)
        self.buttonCancel.grid(row=0, column=0, sticky="e", padx=5)

        # Set (minimum + max) Window size
        self.gui.update()
        self.gui.minsize(self.gui.winfo_width(), self.gui.winfo_height())
        self.gui.maxsize(self.gui.winfo_width(), self.gui.winfo_height())

        self.entryEnzyme.focus()

        self.buttonOK.bind("<ButtonRelease>", self.actionOK)
        self.buttonCancel.bind("<ButtonRelease>", self.actionCancel)
        self.entryEnzyme.bind("<Return>", self.actionOK)

        self.gui.mainloop()

    #         self.gui.grab_release()
    #         self.gui.destroy()

    def actionOK(self, event):
        enzymeString = self.entryEnzyme.get()
        if enzymeString in rest_dict.keys():

            if enzymeString in self.parent.optimizer.restrictionEnzymeList:
                showinfo("", (enzymeString + " was already added to the list"))
                return

            self.parent.optimizer.restrictionEnzymeList.append(enzymeString)
            self.parent.guiRoot.event_generate("<<Update>>", when="tail")
            self.gui.destroy()
        else:
            showinfo("", (enzymeString + " is not a valid restriction enzyme"))

    def actionCancel(self, event):
        self.gui.destroy()
class _Testdialog:
    """Only used to test dialog from CLI"""
    def __init__(self, master):
        """Initialize CLI test GUI"""
        frame = Frame(master, width=300, height=300)
        frame.pack()
        self.master = master
        self.x, self.y, self.w, self.h = -1, -1, -1, -1

        self.Button_1 = Button(text="Test Dialog", relief="raised", width="15")
        self.Button_1.place(x=84, y=36)
        self.Button_1.bind("<ButtonRelease-1>", self.Button_1_Click)

    def Button_1_Click(self, event): #click method for component ID=1
        """Launch Select_Py_Version for CLI testing."""
        rbL = ['2.5.5', '2.6.6', 'PYPY 3.2.2']
        dialog = Select_Py_Version(self.master, "Test Dialog", dialogOptions={'rbL':rbL})
        print( '===============Result from Dialog====================' )
        print( dialog.result)
        print( '=====================================================' )
示例#36
0
文件: main.py 项目: kr1/roqba
 def create_check_buttons(self):
     self.cb_frame = LabelFrame(self, text="Global Settings")
     for cb in CHECK_BUTTONS:
         label = cb
         target_parent = self.cb_frame
         if isinstance(CHECK_BUTTONS[cb], dict) and 'sub_frame' in list(CHECK_BUTTONS[cb].keys()):
             target_parent = getattr(self, CHECK_BUTTONS[cb]['sub_frame'])
         setattr(self, cb, IntVar(value=type(CHECK_BUTTONS[cb]) == dict and
                                  CHECK_BUTTONS[cb]['val'] or
                                  CHECK_BUTTONS[cb]))
         self.this_cb = Checkbutton(target_parent, text=label, variable=getattr(self, cb))
         self.this_cb.bind('<Button-1>', self.check_boxes_handler)
         self.this_cb.disable = (type(CHECK_BUTTONS[cb]) == dict and
                                 'disable' in list(CHECK_BUTTONS[cb].keys()))
         self.this_cb.grid(sticky=W, column=0, row=len(target_parent.winfo_children()))
         self.this_cb.ref = cb
     for but in GLOBAL_BUTTONS:
         label = but
         ele = GLOBAL_BUTTONS[but]
         this_but = Button(self.cb_frame, text=but)
         this_but.bind('<ButtonRelease-1>', getattr(self, ele['handler']))
         this_but.ref = but
         this_but.grid(sticky=W, column=0, row=len(self.cb_frame.winfo_children()))
     self.cb_frame.grid(column=0, row=0, rowspan=10, sticky=N)
示例#37
0
class rmap():
    _var = [1]
    _nc = 0
    _nr = 0
    _r = 0
    _c = 0
    _size = 0
    _w = 0
    _d = 0
    _NoneUpdate = False
    _Nonelabel = False
    _Nonegettext = False
    _field = []
    _endPoint = (0,0)

    _robot = '' # рисунок Робота (синее кольцо)
    _park = ''

    _canvas = ''
    sleep = 0.5
    _task = ''
    _solve = ''
    _test = ''
    _res = ''
    _bum = 0

    m = []
    m.append('task1')
    m.append('task2')
    m.append('task3')
    m.append('task4')
    m.append('task5')

    m.append('task6')
    m.append('task7')
    m.append('task8')
    m.append('task9')
    m.append('task10')
    m.append('task11')
    m.append('task12')
    m.append('task13')

    class _v: # будет содержать изображение текста и квадратиков закраски и меток. Чтобы можно было "поднимать изображение"
        text = '' 
        label = '' 
        color = ''

    class _Tcell():
        color = ''
        text = ''
        label = '' # color
        wUp = False
        wLeft = False
        v = ''

    def help(self):
        """ Вывести список команд Робота
Примеры использования по команде r.help_full()
"""
        print("""
Пояснение по каждой команде: print команда.__doc__
Например:
print r.color.__doc__

---=: Команды перемещения :=---
r.rt() # Вправо
r.lt() # Влево
r.dn() # Вниз
r.up() # Вверх
r.jumpTo(r,c) # Прыжок в точку. Без особых указаний в задачах не использовать
-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=

---=: Команды изменения среды :=---
r.pt([цвет]) # Закрасить указанным цветом. По умолчанию зеленым
r.sw(направление) # Установить стену с указанной стороны
r.settext(тест) # Вписать в клетку текст
-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=

---=: Команды обратной связи :=---
r.cl() # Каким цветом закрашена клетка? r.color()
r.label() # Какого цвета метка в клетке?
r.gettext() # Какой текст в клетке?

r.getCoords() # Где Робот?
r.getCoordR() # В какой строке Робот?
r.getCoordС() # В каком столбце Робот?

r.fu() # Сверху свободно?
r.fd() # Снизу свободно?
r.fr() # Справа свободно?
r.fl() # Слева свободно?

r.wu() # Сверху стена?
r.wd() # Снизу стена?
r.wr() # Справа стена?
r.wl() # Слева стена?

r.isPark # Робот на парковке?
-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=

---=: Дополнительно :=---
r.sleep = 0.4 # Установить размер задержки после каждого хода. Меньше значение - быстрее Робот.
r._NoneUpdate = False # Отключить прорисовку поля
r._NoneUpdate = True # Включить прорисовку поля
r.demo() # Показать, что нужно сделать в текущей задаче
r.demoAll() # Показать все задачи (с решениями, по очереди)
r.randcolor() # Генерировать случайный цвет
-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=

""")

    def help_full(self):
        """ Примеры. Для получения списка команд r.help()
Примеры использования по команде r.help_full()
Больше информации по каждой команде: print команда.__doc__
Например:
print r.color.__doc__
"""
        print("""
Не реализовано в данной версии. 
Если нужно - пишите на [email protected] или на сайте progras.ru
""")

    def demo(self):
        """Показать выполнение задачи
Пример использования:
#-------------------
r.demo()
#-------------------

Для уcкорения использовать r.sleep = 0.01
В задании 10-3(4/5) можно отключить обновление экрана
#-------------------
r._NoneUpdate = True
r.demo()
r._NoneUpdate = False
#-------------------
"""
        global r
        r = self
        exec(self._solve)

    def demoAll(self):
        """Показать выполнение всех заданий в автоматическом режиме
Пример использования:

#-------------------
r.demoAll()
#-------------------

Для того, чтобы Робот двигался быстрее, используйте
#-------------------
r.sleep = 0 
r.demoAll()
#-------------------

"""
        global r
        r = self
        for x in r.m:
            r.lm(x)
            print(x)
            r.demo()
            r.pause()
          
    def __init__(self):
        self._w = 4 # толщина стен
        self._d = 4 # на столько меньше клетки закраска (с каждой стороны)
        self.sleep = 0.5 # замедление
        self._font_size = self._size // 2
        self._tk = Tk()
        self._tk.geometry('+0+0')
        x = (self._tk.winfo_screenwidth() - self._tk.winfo_reqwidth()) / 3
        y = (self._tk.winfo_screenheight() - self._tk.winfo_reqheight()) / 4
        self._tk.wm_geometry("+%d+%d" % (x, y))
        self._tk.title('Robot-hobot')
        self._canvas = Canvas(self._tk, width=(self._size*(self._nc+1)), height=(self._size*(self._nr+1)), bg="gray")

        buttons = Frame(self._tk)

        self.task = Label (self._tk, justify = 'left')
        self.res = Label (self._tk, justify = 'left')

        self._but_start = Button(buttons,text = 'start',width=10,height=1)
        self._but_start.bind('<ButtonRelease-1>',self.but1)

        self._but_demo = Button(buttons,text = 'demo',width=10,height=1)
        self._but_demo.bind('<ButtonRelease-1>',self.but_demo)

        self._but_reload = Button(buttons,text = 'reload',width=10,height=1)
        self._but_reload.bind('<ButtonRelease-1>',self.but_reload)

        self._but_load_next = Button(buttons,text = 'load next',width=10,height=1)
        self._but_load_next.bind('<ButtonRelease-1>',self.but_load_next)

        buttons.grid(row=0, column=0, sticky = "w") 
        self._canvas.grid(row=1, column=0, sticky = "e")
        self._but_start.pack(side = "left")
        self._but_demo.pack(side = "left")
        self._but_reload.pack(side = "left")
        self._but_load_next.pack(side = "left")
        self.task.grid(row=3, column=0, sticky = "w")
        self.res.grid(row=4, column=0, sticky = "w")

##        self.loadmap()
    def but_load_next(self,event):
        print ("load next")
        index = self.m.index(self._cur_map)
        if index < len(self.m)-1:
            self.lm(self.m[index+1])
        else:
            self.lm(self.m[0])

    	
    def but_demo(self,event):
        print ("demo")
        self.demo()

    def but1(self,event):
        print ('start')
        #self.lm(self._cur_map)
        self.solve_task()

    def but_reload(self,event):
        print ("reload")
        self.lm(self._cur_map)

            
    def clear (self):
        "Очистка данных (без перерисовки)"
        self._canvas.delete('all')
        self._field = []
        self._park = []
        self._Nonelabel = False
        self._NoneisPark = False
        self._Nonesettext = False
        self._test = ''
        self._res = ''
        self._bum = 0

        for r in range(1,self._nr+2):
            row = []
            for c in range(1,self._nc+2):
                row.append (self._Tcell())
            self._field.append(row)

        for r in range (1,self._nr):
            for c in range(1,self._nc):
                self._field[r][c].text = ''
                self._field[r][c].color = ''
                self._field[r][c].label = ''
                self._field[r][c].wUp = False
                self._field[r][c].wLeft = False
                self._field[r][c].v = self._v()
                
        for c in range (1,self._nc):
            self._field[1][c].wUp = True
            self._field[self._nr][c].wUp = True

        for r in range (1,self._nr):
            self._field[r][1].wLeft = True
            self._field[r][self._nc].wLeft = True

        self._solve = ''
        self._r = 1
        self._c = 1

    def _paintMap(self): 
        "Перерисовка  по имеющимся данным"
        remc = self._c
        remr = self._r
        size = self._size
        sleep = self.sleep
        self.sleep = 0

        self._bg = [self._canvas.create_rectangle(1,1,(size*(self._nc+1)), (size*(self._nr+1)), fill="gray")]
        # создать поле
        
        for r in range (1, self._nr+1):
            self._bg.append(self._canvas.create_line(size,r*size,self._nc*size,r*size))
            if r < self._nr: self._canvas.create_text(size/2,r*size+size/2,text=r)
        for c in range (1, self._nc+1):
            self._bg.append(self._canvas.create_line(c*size,size,c*size,self._nr*size))
            if c < self._nc: self._bg.append(self._canvas.create_text(c*size+size/2,size/2,text=c))
        # клетки и номера столбцов и строк

        for r in range (1,self._nr): 
            for c in range(1,self._nc):
                self._r = r
                self._c = c
                if  self._field[r][c].wUp: # стена сверху
                    self.setWall('up')
                if  self._field[r][c].wLeft: # стена слева
                    self.setWall('left')
                if  self._field[r][c].color != '' : # закраска
                    self.paint(self._field[r][c].color)
                if  self._field[r][c].label != '' : # метка0000
                    d = self._d 
                    x1 = self._size*(c)
                    x2 = self._size*(c+1)
                    y1 = self._size*(r)
                    y2 = self._size*(r+1)
                    self._canvas.delete(self._field[r][c].v.label)
                    self._field[r][c].v.label = self._canvas.create_rectangle(x1+d,y1+d,x2-d,y2-d, width = d-1, outline = self._field[r][c].label)
                    self._canvas.lift(self._robot)
                self.settext(self._field[r][c].text) # текст

        for self._c in range (1,self._nc): 
                if  self._field[self._nr][self._c].wUp: # стена сверху
                    self.setWall('down')

        for self._r in range (1,self._nr): 
                if  self._field[self._r][self._nc].wLeft: # стена слева
                    self.setWall('right')

        r = self._endPoint[0]
        c = self._endPoint[1]
        self._canvas.delete(self._park)
        if r > 0 and c > 0:
            self._park = self._canvas.create_oval (c*size+6,r*size+6, c*size+size-6,r*size+size-6, width = 3, outline = 'yellow')
        # конечная точка
        
        self.jumpTo((remr,remc))
        self._task = '\n'+self._task
        self.task.config(text = self._task)
        self.res.config()
        self._update()
        self.sleep = sleep
        #self.pause()

        
    def _update(self):
        "Обновить canvas"
        if not self._NoneUpdate:
            self._canvas.update()
            time.sleep(self.sleep)
        

    def start(self,fun):
        self.solve_task = fun
        self._tk.mainloop()


##Робот    

    def pause(self,t=1):
        """Приостановка выполнения программы. Пауза в секундах. 
#-------------------
r.pause() # пауза в одну секунду
#-------------------
r.pause(2) # пауза две секунды
#-------------------
"""
        time.sleep(t)
		
    def left(self, a = 1):
        """Шаг влево
#-------------------
r.left()
#-------------------
r.lt()
#-------------------
r.lt(3) 
#-------------------
"""
        if a == 1:
            if self.freeLeft():
                self._c -= 1
                self._canvas.move(self._robot,-self._size*a,0)
                self._update()
            else:
                self._stop()
        else :
            for z in range(0,a):
                self.left()

    def right(self, a = 1):
        """ Шаг вправо        
#-------------------
r.right()
#-------------------
r.rt()
#-------------------
r.rt(5)
#-------------------
"""        
        if a == 1:
            if self.freeRight():
                self._c += 1
                self._canvas.move(self._robot,self._size*a,0)
                self._update()
            else:
                self._stop()
                
        else :
            for z in range(0,a):
                self.right()
        
    def up(self, a = 1):
        """Шаг вверх
#-------------------
r.up()
#-------------------
r.up(3)
#-------------------
"""
        if a == 1:
            if self.freeUp():
                self._r -= 1
                self._canvas.move(self._robot,0,-self._size*a)
                self._update()
            else:
                self._stop()
        else :
            for z in range(0,a):
                self.up()
        
    def down(self, a = 1):
        """ Шаг вниз
#-------------------
r.down()
#-------------------
r.dn()
#-------------------
r.dn(4)
#-------------------
"""
        if a == 1:
            if self.freeDown():
                self._r += 1
                self._canvas.move(self._robot,0,self._size*a)
                self._update()
            else:
                self._stop()
        else :
            for z in range(0,a):
                self.down()
                
    def jumpTo(self,coord=(1,1)):
        """Прыжок в клетку с указанными координами. Через стены.
#-------------------
r.jumpTo((2,3)) # Робот окажется в третьем столбце второй строки
#-------------------
"""

        r = coord[0]
        c = coord[1]
        if ( 0 < r < self._nc) and (0 < c < self._nc):
            self._r = r
            self._c = c
            size = self._size
            self._canvas.coords(self._robot, c*size+4,r*size+4, c*size+size-4,r*size+size-4)
            self._canvas.lift(self._robot)
            self._update()
        else:
            print("Попытка переместиться за пределы поля. Отказано.")

    def paint (self, color = 'green'):
        """ Закрасить текущую клетку выбранным цветом. Если цвет не указан, то зеленым
#-------------------
r.paint() # Закрасит текущую клетку зеленым цветом
#-------------------
r.pt() # Закрасит текущую клетку зеленым цветом
#-------------------
r.pt('red') # Закрасит текущую клетку красным цветом
#-------------------
r.pt(r.randcolor()) # Закрасит текущую клетку случайным цветом
#-------------------
r.pt(r.label()) # Закрасит текущую клетку цветом метки в этой клетке
#-------------------
"""
        d = self._d+1
        self._field[self._r][self._c].color = color

        x1 = self._size*(self._c)
        x2 = self._size*(self._c+1)
        y1 = self._size*(self._r)
        y2 = self._size*(self._r+1)
        self._canvas.delete(self._field[self._r][self._c].v.color)
        self._field[self._r][self._c].v.color = self._canvas.create_rectangle(x1+d,y1+d,x2-d,y2-d, width = 0, fill = color)
        self._canvas.lift(self._field[self._r][self._c].v.text)
        self._canvas.lift(self._robot)
        self._canvas.lift(self._park)
        self._update()

    def setWall (self, target):
        """ Установить стену с указанной стороны
#-------------------
r.sw('up') # Установить стену сверху
#-------------------
r.sw('left') # Установить стену слева 
#-------------------
r.sw('down') # Установить стену снизу
#-------------------
r.sw('right') # Установить стену справа
#-------------------
"""
        size = self._size
        w = self._w
        if target == 'up':
            r = self._r
            c = self._c
            x1 = size*(c)-1
            x2 = size*(c+1)+1
            y1 = size*(r)
            y2 = size*(r+1)
            self._field[r][c].wUp = True
            self._canvas.create_line(x1,y1,x2,y1, width = w)
        elif target == 'left':
            r = self._r
            c = self._c
            x1 = size*(c)
            x2 = size*(c+1)
            y1 = size*(r)-1
            y2 = size*(r+1)+1
            self._field[r][c].wLeft = True
            self._canvas.create_line(x1,y1,x1,y2, width = w)
        elif target == 'down':
            r = self._r+1
            c = self._c
            x1 = size*(c)-1
            x2 = size*(c+1)+1
            y1 = size*(r)
            y2 = size*(r+1)
            self._field[r][c].wDown = True
            self._canvas.create_line(x1,y1,x2,y1, width = w)
        elif target == 'right':
            r = self._r
            c = self._c+1
            x1 = size*(c)
            x2 = size*(c+1)
            y1 = size*(r)-1
            y2 = size*(r+1)+1
            self._field[r][c].wRight = True
            self._canvas.create_line(x1,y1,x1,y2, width = 4)
        self._update()

    def wallUp (self):
        """ Возвращает истину, если сверху есть стена
#-------------------
if r.wallUp(): r.pt() # Закрасить, если сверху стена
#-------------------
if r.wu(): r.pt() # Закрасить, если сверху стена
#-------------------
if r.wu(): 
    r.pt() # Закрасить, если сверху стена
    r.rt() # Перейти вправо
#-------------------
while r.wu(): # Идти вправо, пока сверху есть стена
    r.rt()
"""
        return self._field[self._r][self._c].wUp 

    def wallDown (self):
        """ Возвращает истину, если снизу есть стена
#-------------------
if r.wallDown(): r.pt() # Закрасить, если снизу стена
#-------------------
if r.wd(): r.pt() # Закрасить, если снизу стена
#-------------------
if r.wd(): 
    r.pt() # Закрасить, если снизу стена
    r.rt() # Перейти вправо
#-------------------
while r.wd(): # Идти вправо, пока снизу есть стена
    r.rt()
"""
        return self._field[self._r+1][self._c].wUp 

    def wallLeft (self):
        """ Возвращает истину, если слева есть стена
#-------------------
if r.wallLeft(): r.pt() # Закрасить, если слева стена
#-------------------
if r.wl(): r.pt() # Закрасить, если слева стена
#-------------------
if r.wl(): 
    r.pt() # Закрасить, если слева стена
    r.dn() # Перейти вниз
#-------------------
while r.wl(): # Идти вниз, пока слева есть стена
    r.dn()
"""
        return self._field[self._r][self._c].wLeft

    def wallRight (self):
        """ Возвращает истину, если справа есть стена
#-------------------
if r.wallRight(): r.pt() # Закрасить, если справа стена
#-------------------
if r.wr(): r.pt() # Закрасить, если справа стена
#-------------------
if r.wr(): 
    r.pt() # Закрасить, если справа стена
    r.dn() # Перейти вниз
#-------------------
while r.wr(): # Идти вниз, пока справа есть стена
    r.dn()
"""
        return self._field[self._r][self._c+1].wLeft

    def freeUp (self):
        """ Возвращает истину, если сверху свободно (нет стены)
#-------------------
if r.freeUp(): r.pt() # Закрасить, если сверху свободно
#-------------------
if r.fu(): r.up() # Шагнуть вверх, если сверху свободно
#-------------------
if r.fu(): 
    r.up() # Шагнуть вверх
    r.pt() # Закрасить
    r.dn() # Перейти вниз
#-------------------
while r.fu(): # Идти вверх, пока сверху свободно
    r.up()
"""
        return not self._field[self._r][self._c].wUp 

    def freeDown (self):
        """ Возвращает истину, если снизу свободно (нет стены)
#-------------------
if r.freeDown(): r.pt() # Закрасить, если снизу свободно
#-------------------
if r.fd(): r.dn() # Шагнуть вверх, если снизу свободно
#-------------------
if r.fd(): 
    r.dn() # Шагнуть снизу
    r.pt() # Закрасить
    r.up() # Перейти вверх
#-------------------
while r.fd(): # Идти вниз, пока снизу свободно
    r.dn()
"""
        return not self._field[self._r+1][self._c].wUp 

    def freeLeft (self):
        """ Возвращает истину, если слева свободно (нет стены)
#-------------------
if r.freeLeft(): r.pt() # Закрасить, если слева свободно
#-------------------
if r.fl(): r.lt() # Шагнуть влево, если слева свободно
#-------------------
if r.fl(): 
    r.lt() # Шагнуть влево
    r.pt() # Закрасить
    r.rt() # Перейти вправо
#-------------------
while r.fl(): # Идти влево, пока слева свободно
    r.lt()
"""
        return not self._field[self._r][self._c].wLeft

    def freeRight (self):
        """ Возвращает истину, если снизу свободно (нет стены)
#-------------------
if r.freeDown(): r.pt() # Закрасить, если снизу свободно
#-------------------
if r.fd(): r.dn() # Шагнуть вверх, если снизу свободно
#-------------------
if r.fd(): 
    r.dn() # Шагнуть снизу
    r.pt() # Закрасить
    r.up() # Перейти вверх
#-------------------
while r.fd(): # Идти вниз, пока снизу свободно
    r.dn()
"""
        return not self._field[self._r][self._c+1].wLeft

    def getCoords(self):
        " Возвращает координаты в виде (row,column)"
        return (self._r,self._c)

    def getCoordR(self):
        " Возвращает номер строки, в которой находиться Робот"
        return self._r

    def getCoordC(self):
        " Возвращает номер столбца, в которой находиться Робот"
        return self._c

    def isPark (self):
        " Возвращает истину, если Робот находиться на парковке"
        if self._NoneisPark: self.null()
        else: return self._endPoint == self.getCoords()

    def color (self):
        """ Возвращает цвет, которым закрашена клетка
Можно использовать для проверки, закрашена ли клетка:
#-------------------
# Закрасить, если сверху закрашено
r.up()
if r.color():
    r.dn()
    r.pt()
else:
    r.dn()
#-------------------
if r.color() == 'red': r.rt() # Вправо, если закрашено красным
#-------------------
"""
        return self._field[self._r][self._c].color
    
    def randcolor (self):
        """ Возвращает случайный цвет
#-------------------
r.pt(r.randcolor()) # Закрасить случайным цветом
#-------------------
# Закрасить соседнюю клетку тем же цветом, что и текущая
x = r.color()
r.rt()
r.pt(x)
#-------------------
"""
        cr = rnd(1,255,10)
        cg = rnd(1,255,10)
        cb = rnd(1,255,10)
        color =  "#%02X%02X%02X" %(cr,cg,cb)
        return str(color)


    def label (self):
        """ Возвращает цвет метки текущей клетки
#-------------------
if r.label() == 'red': r.pt('red') # Закрасить клетку красным, если метка красная
#-------------------
"""
        if self._Nonelabel: self.null()
        else: return self._field[self._r][self._c].label
    
    def gettext(self):
        """ Возвращает текст, записанный в ячейке. 
#-------------------
if r.gettext() != '': r.rt() # Перейти вправо, если в ячейке есть какой-нибудь текст
#-------------------
if r.gettext() == '3': r.rt() # Перейти вправо, если в ячейке записано 3
#-------------------
n = r.gettext()
if n: r.rt(n) # Перейти вправо на количество шагов, указанное в клетке
#-------------------
"""
        if self._Nonegettext: self.null()
        else: return self._field[self._r][self._c].text
    
    def settext(self,text):
        """ Записать текст в клетку
#-------------------
r.settext(3)
#-------------------
"""
        self._field[self._r][self._c].text = text
        d = 1
        x1 = self._size*(self._c)
        x2 = self._size*(self._c+1)
        y1 = self._size*(self._r)
        y2 = self._size*(self._r+1)
        self._canvas.delete(self._field[self._r][self._c].v.text)
        self._field[self._r][self._c].v.text =  self._canvas.create_text(self._c*self._size+self._size/2,self._r*self._size+self._size/2,text =
                                 self._field[self._r][self._c].text, font = ('Helvetica', self._font_size,'bold'))
        self._update()

    def _stop (self):
        print ("Bum!")
        self._bum = 1
        self._canvas.delete(self._robot)
        x = self._c
        y = self._r
        
        self._robot = self._canvas.create_oval(
            x*self._size+2*self._d,y*self._size+2*self._d,
            x*self._size+self._size-2*self._d,y*self._size+self._size-2*self._d,
            fill = '#FF0000')

    def null (self, *args):
        print('Эта команда запрещена к использованию в данной задаче. Ищите другой способ')
        return ''


    def loadmap(self,mn=m[0],variant=0):
        """ Загрузить карту (задачу)
#-------------------
r.loadmap('task10-5')
#-------------------
r.lm('task10-5') # Загрузить задачу по названию
#-------------------
r.lm(r.m[5]) # Загрузить задачу по номеру
#-------------------
# Вывести полный список названий и номеров заданий
for x in r.m:
    print r.m.index(x),x
#-------------------
"""
        self._tk.title(mn)
        self._cur_map = mn
        self._NoneUpdate = False
        self._endPoint = (0, 0)
#        self._NoneUpdate = True

        if mn == 'task1':
            self._nc = 7
            self._nr = 5
            self._size = 30

            self.clear()
            self._r = 3
            self._c = 2

            self._solve = ''
            self._endPoint = (3,5)
            self._task = 'Необходимо перевести Робота по лабиринту\n' \
                         ' из начального положения в конечное.\n'

            self._field[2][2].wUp = True
            self._field[2][3].wUp = True
            self._field[2][4].wUp = True
            self._field[2][5].wUp = True

            self._field[4][2].wUp = True
            self._field[4][3].wUp = True
            self._field[4][4].wUp = True
            self._field[4][5].wUp = True

            self._field[2][4].wLeft = True
            self._field[3][3].wLeft = True
            self._field[3][5].wLeft = True

        ##--------------------------------------------------------------------------------------------
        elif mn == 'task2':
            self._nc = 16
            self._nr = 4
            self._size = 30

            self.clear()
            self._r = 3
            self._c = 1

            self._solve = ''
            
            self._task = 'Составьте программу рисования узора.\n'

        ##--------------------------------------------------------------------------------------------
        elif mn == 'task3':
            self._nc = 10
            self._nr = 5
            self._size = 30
            self.clear()
            self._r = 2
            self._c = 1

            self._endPoint = (2,9)
            self._solve = ''
            self._task = 'Необходимо провести Робота вдоль коридора\n' \
                         ' из начального положения в конечное,\n' \
                         ' заглядывая в каждый боковой коридор.'

            for i in range(2, 9):
                self._field[2][i].wUp = True
                if i%2 == 0:
                    self._field[3][i].wUp = True
                else:
                    self._field[4][i].wUp = True

                if i < 8:
                    self._field[3][i+1].wLeft = True

        ##--------------------------------------------------------------------------------------------
        elif mn == 'task4':
            self._nc = 8
            self._nr = 12
            self._size = 30
            self.clear()
            self._r = rnd(1, self._nr)
            self._c = rnd(1, self._nc)

            for i in range(0, 5):
                for j in range(0, 3):
                    self._field[6+2*j-i][2+i].label = 'red'

            self._solve = ''
            self._task = 'Составьте программу закрашивания\n' \
                         ' клеток поля, отмеченных звездочкой.\n'

        ##--------------------------------------------------------------------------------------------
        elif mn == 'task5':
            self._nc = 11
            self._nr = 10
            self._r = 1
            self._c = 1
            self._size = 30

            self.clear()
            self._solve = ''
            self._task = 'Составьте программу рисования узора.'

        ##--------------------------------------------------------------------------------------------
        ##--------------------------------------------------------------------------------------------
        elif mn == 'task6':
            self._nc = 25
            self._nr = 25
            self._r = 1
            self._c = 1
            self._size = 20
            self.clear()
            self._solve = ''
            self._task = 'Составьте программу рисования фигуры в виде буквы "Т".\n' \
                         ' Вертикальные и горизонтальные размеры пользователь вводит\n' \
                         ' с клавиатуры. Ввод данных можно осуществлять любым способом.\n'

        ##-------------------------------------------------------------------------------------------------------
        elif mn == 'task7':
            self._nc = 16
            self._nr = 11
            self._size = 25
                
            self.clear()

            self._r = rnd(1, self._nr)
            self._c = rnd(1, self._nc)

            self._field[3][2].wUp = True
            self._field[2][9].wUp = True
            self._field[3][12].wUp = True
            self._field[6][12].wUp = True
            self._field[7][3].wUp = True
            self._field[7][9].wUp = True
            self._field[8][6].wUp = True
            self._field[9][2].wUp = True
            self._field[9][11].wUp = True

            for i in range(0, 4):
                self._field[4][5+i].wUp = True
                self._field[5][5+i].wUp = True


            self._solve = ''
        
            self._task = 'Где-то в поле Робота находится горизонтальный коридор шириной в одну клетку\n' \
                         ' неизвестной длины. Робот из верхнего левого угла поля должен дойти до\n' \
                         ' коридора и закрасить клетки внутри него, как указано в задании. По полю\n' \
                         ' Робота в произвольном порядке располагаются стены, но расстояние \n' \
                         'между ними больше одной клетки.\n'
        ##--------------------------------------------------------------------------------------------
        elif mn == 'task8':
            self._nc = 16
            self._nr = 11
            self._size = 25

            self.clear()

            self._r = rnd(1, self._nr)
            self._c = rnd(1, self._nc)

            self._field[2][6].wLeft = True
            self._field[3][6].wLeft = True
            self._field[5][6].wLeft = True
            self._field[6][6].wLeft = True
            self._field[7][6].wLeft = True
            self._field[8][6].wLeft = True

            self._solve = ''
            self._task = 'Где-то в поле Робота находится вертикальная стена с отверстием в одну клетку,\n' \
                         ' размеры которой неизвестны. Робот из произвольной клетки должен дойти до\n' \
                         ' стены и закрасить клетки как показано в задании.\n'

        ##--------------------------------------------------------------------------------------------
        elif mn == 'task9':
            self._nc = 20
            self._nr = 20
            self._size = 25

            self.clear()

            self._r = rnd(1, self._nr)
            self._c = rnd(1, self._nc)

            c = rnd(2,16)
            r = rnd(2,16)
            w = rnd(3,8)
            h = rnd(3,8)
            if c + w >= self._nc: w = self._nc-c
            if r + h >= self._nc: h = self._nr-r

            for rcount in range(0,h):
                for ccount in range(0,w):
                    self._field[r + rcount][c+ccount].label = 'green'

            self._solve = ''

            self._task = 'На поле находится квадрат из закрашенных клеток. Вычислить и вывести на экран площадь квадрата.\n'

        ##--------------------------------------------------------------------------------------------
        elif mn == 'task10':
            self._nc = 15
            self._nr = 11
            self._size = 30
            self.clear()
            self._r = 2
            self._c = 1

            self._field[2][1].wUp = True
            self._field[2][2].wUp = True
            self._field[2][4].wUp = True
            self._field[2][5].wUp = True
            self._field[2][6].wUp = True
            self._field[2][8].wUp = True
            self._field[2][9].wUp = True
            self._field[2][11].wUp = True
            self._field[2][12].wUp = True
            self._field[2][13].wLeft = True

            self._field[3][1].wUp = True
            self._field[3][2].wUp = True
            self._field[3][3].wUp = True
            self._field[3][4].wUp = True
            self._field[3][6].wUp = True
            self._field[3][7].wUp = True
            self._field[3][8].wUp = True
            self._field[3][10].wUp = True
            self._field[3][11].wUp = True
            self._field[3][12].wLeft = True

            self._field[4][3].wLeft = True
            self._field[4][3].wUp = True
            self._field[4][4].wUp = True
            self._field[4][5].wUp = True
            self._field[4][6].wUp = True
            self._field[4][8].wUp = True
            self._field[4][9].wUp = True
            self._field[4][10].wUp = True
            self._field[4][11].wUp = True
            self._field[4][13].wLeft = True

            self._field[5][3].wLeft = True
            self._field[5][4].wLeft = True
            self._field[5][4].wUp = True
            self._field[5][6].wUp = True
            self._field[5][7].wUp = True
            self._field[5][8].wUp = True
            self._field[5][10].wUp = True
            self._field[5][11].wUp = True
            self._field[5][12].wUp = True

            self._field[6][3].wLeft = True
            self._field[6][4].wUp = True
            self._field[6][5].wLeft = True

            self._field[7][3].wUp = True
            self._field[7][4].wLeft = True
            self._field[7][6].wUp = True
            self._field[7][7].wLeft = True

            self._field[8][4].wUp = True
            self._field[8][5].wUp = True
            self._field[8][6].wLeft = True
            self._field[8][7].wUp = True
            self._field[8][8].wLeft = True

            self._field[9][6].wUp = True
            self._field[9][7].wLeft = True
            self._field[9][8].wUp = True
            self._field[9][9].wUp = True
            self._field[9][10].wLeft = True

            self._field[10][7].wUp = True
            self._field[10][9].wLeft = True
            self._field[10][10].wLeft = True

            self._endPoint = (10,1)
            self._solve = """
"""

            self._task = 'Необходимо провести Робота по коридору шириной в одну клетку из начального положения до конца коридора, \n' \
                         'закрашивая при этом все клетки коридора, которые имеют выход. Выходы размером в одну клетку располагаются \n' \
                         'произвольно по всей длине коридора. Коридор заканчивается тупиком. Коридор имеет два горизонтальных и \n' \
                         'диагональный участки. Пример коридора показан на рисунке.\n'

        elif mn == 'task11':
            self._nc = 15
            self._nr = 11
            self._size = 30
            self.clear()

            self._r = rnd(1, self._nr)
            self._c = rnd(1, self._nc)

            for i in range(1,self._nr):
                for j in range(1,self._nc):
                    self._field[i][j].text = str(rnd(0, 10))

            self._task = 'На поле 10х15 каждой в каждой клетке записана цифра (от 0 до 9).\n Закрасить квадрат 2х2 с наименьшей суммой значений клеток.'

        elif mn == 'task12':
            self._nc = 15
            self._nr = 6
            self._size = 30
            self.clear()

            self._r = 2
            self._c = 13

            self._field[2][2].wUp = True
            self._field[2][3].wLeft = True
            self._field[3][3].wLeft = True
            self._field[4][3].wLeft = True
            self._field[5][3].wUp = True
            self._field[5][4].wUp = True
            self._field[4][5].wLeft = True
            self._field[3][5].wLeft = True
            self._field[2][5].wLeft = True
            self._field[2][5].wUp = True
            self._field[2][6].wLeft = True
            self._field[3][6].wLeft = True
            self._field[4][6].wLeft = True
            self._field[5][6].wUp = True
            self._field[5][7].wUp = True
            self._field[5][8].wUp = True
            self._field[4][9].wLeft = True
            self._field[3][9].wLeft = True
            self._field[2][9].wLeft = True
            self._field[2][9].wUp = True
            self._field[2][10].wUp = True
            self._field[2][11].wLeft = True
            self._field[3][11].wLeft = True
            self._field[4][11].wLeft = True
            self._field[5][11].wUp = True
            self._field[4][12].wLeft = True
            self._field[3][12].wLeft = True
            self._field[2][12].wLeft = True
            self._field[2][12].wUp = True
            self._field[2][13].wUp = True


            self._task = 'Робот движется вдоль стены, профиль которой показан на рисунке,\n' \
                         ' от начального положения до конца стены. Необходимо закрасить\n' \
                         ' все внутренние углы стены, как показано на примере. Размеры стены\n могут быть произвольны.'

        elif mn == 'task13':
            self._nc = 20
            self._nr = 20
            self._size = 25

            self.clear()

            self._r = rnd(self._nr/2, self._nr)
            self._c = rnd(self._nc/2, self._nc)

            col = rnd(2, self._nc/2)
            row = rnd(4, self._nr/2)
            height = rnd(4, self._nr-4)

            if row + height >= self._nr:
                height = self._nr - row-1

            for i in range(row, row+height):
                self._field[i][col].wLeft = True

        ##--------------------------------------------------------------------------------------------

        ##--------------------------------------------------------------------------------------------
# сделать прямое управление с демонстрацией датчиков и возможностей
# при запуске робота создавать task.py и справочник :)
# сделать робота без клеток !!!
        ##--------------------------------------------------------------------------------------------
        ##--------------------------------------------------------------------------------------------
        else:
            print(mn)
            self._task = "Нет задачи с таким номером"
            self._test = '-'

        self._canvas.config(
            width=(self._size*(self._nc+1)),
            height=(self._size*(self._nr+1)))
        x = y = 1
        d = self._d
        d = 6
        self._robot = self._canvas.create_oval(
            x*self._size+d,y*self._size+d,
            x*self._size+self._size-d,y*self._size+self._size-d,
            outline = '#4400FF', width = 3)

        self._paintMap()

    lm = loadmap
    lt = left
    rt = right
    dn = down
    pt = paint
    sw = setWall
    wu = wallUp
    wd = wallDown
    wl = wallLeft
    wr = wallRight
    fu = freeUp
    fd = freeDown
    fl = freeLeft
    fr = freeRight
    cl = color
示例#38
0
文件: prgWord.py 项目: savit/example2
panelFrame = Frame(root, height = 60, bg = 'gray')
textFrame = Frame(root, height = 340, width = 600)

panelFrame.pack(side = 'top', fill = 'x')
textFrame.pack(side = 'bottom', fill = 'both', expand = 1)

textbox = Text(textFrame, font='Arial 14', wrap='word')
scrollbar = Scrollbar(textFrame)

scrollbar['command'] = textbox.yview
textbox['yscrollcommand'] = scrollbar.set



textbox.pack(side = 'left', fill = 'both', expand = 1)
scrollbar.pack(side = 'right', fill = 'y')

loadBtn = Button(panelFrame, text = 'Load')
saveBtn = Button(panelFrame, text = 'Save')
quitBtn = Button(panelFrame, text = 'Quit')

loadBtn.bind("<Button-1>", LoadFile)
saveBtn.bind("<Button-1>", SaveFile)
quitBtn.bind("<Button-1>", Quit)

loadBtn.place(x = 10, y = 10, width = 40, height = 40)
saveBtn.place(x = 60, y = 10, width = 40, height = 40)
quitBtn.place(x = 110, y = 10, width = 40, height = 40)

root.mainloop()
示例#39
0
文件: main.py 项目: lectorvin/graph
ent = Entry(root1,bd=5)
lb.grid(row = 1, column = 1)
ent.grid(row = 2,column = 1)
lb1.grid(row = 3,column = 1)
entx1=Entry(root1, bd = 5)
entx2=Entry(root1, bd = 5)
entx1.grid(row = 4, column = 0)
entx2.grid(row = 4, column = 2)
lb2.grid(row = 5, column = 1)
enty1=Entry(root1, bd = 5)
enty2=Entry(root1, bd = 5)
enty1.grid(row = 6, column = 0)
enty2.grid(row = 6, column = 2)
bt = Button(root1, text = 'done', width = 10, height = 3, 
            bg = 'black', fg='white', command = root1.destroy)
bt.bind("<Button-1>", start)
bt.grid(row = 7, column = 1)
root1.mainloop()

pre = re.compile('([A-Za-z]+)')
xre = re.compile(r'\bx\b')
notx = re.compile('@')
s = tex
s = xre.sub('@', s)
s = pre.sub(r'np.\1', s)
s = notx.sub('x', s)

pl.figure(figsize=(8, 6), dpi=80)
pl.subplot(1, 1, 1)
x = np.linspace( float(a),float(b),2000, endpoint=True)
C = eval(s)
示例#40
0
class Tk_Nosy(object):
    """This class is the tkinter GUI object"""

    # make a collection of python interpreters to choose from
    pythonInterpreterCollection = None # will be PyInterpsOnSys object

    # extra python interpreters can run nosetests concurrently to main window
    #  concurrent_versionL contains tuples = (PI, Popup)
    concurrent_versionL = [] # additional running python interpreters


    def __init__(self, master):
        self.dirname = os.path.abspath( os.curdir )

        self.initComplete = 0
        self.master = master
        self.x, self.y, self.w, self.h = -1,-1,-1,-1

        # bind master to <Configure> in order to handle any resizing, etc.
        # postpone self.master.bind("<Configure>", self.Master_Configure)
        self.master.bind('<Enter>', self.bindConfigure)

        self.menuBar = Menu(master, relief = "raised", bd=2)

        self.menuBar.add("command", label = "Change_Dir", command = self.menu_Directory_Change_Dir)

        disp_Choices = Menu(self.menuBar, tearoff=0)
        self.display_test_details = StringVar()
        self.display_test_details.set('N')
        disp_Choices.add_checkbutton(label='Display Test Details', variable=self.display_test_details, onvalue='Y', offvalue='N')

        self.display_watched_files = StringVar()
        self.display_watched_files.set('N')
        disp_Choices.add_checkbutton(label='Show Watched Files', variable=self.display_watched_files, onvalue='Y', offvalue='N')
        self.menuBar.add("cascade", label="Display", menu=disp_Choices)


        py_choices = Menu(self.menuBar, tearoff=0)
        py_choices.add("command", label = "Change Python Version",
                          command = self.changePythonVersion)
        py_choices.add("command", label = "Find New Python Interpreter",
                          command = self.findNewPythonInterpreter)
        py_choices.add("command", label = "Launch Another Python Interpreter",
                          command = self.launchAnotherPythonInterpreter)
        self.menuBar.add("cascade", label="Python", menu=py_choices)


        #top_Snippet = Menu(self.menuBar, tearoff=0)

        self.menuBar.add("command", label = "Run", command = self.menu_Run)

        self.display_test_details.trace("w", self.rerun_tests)
        self.display_watched_files.trace("w", self.rerun_tests)

        master.config(menu=self.menuBar)

        # make a Status Bar
        self.statusMessage = StringVar()
        self.statusMessage.set(self.dirname)
        self.statusbar = Label(self.master, textvariable=self.statusMessage,
                               bd=1, relief=SUNKEN)
        self.statusbar.pack(anchor=SW, fill=X, side=BOTTOM)

        self.statusbar_bg = self.statusbar.cget('bg') # save bg for restore

        self.arial_12_bold_font = tkinter.font.Font(family="Arial", size=12,
                                                    weight=tkinter.font.BOLD)
        self.arial_12_font      = tkinter.font.Font(family="Arial", size=12)


        self.statusbar.config( font=self.arial_12_bold_font )

        frame = Frame(master)
        frame.pack(anchor=NE, fill=BOTH, side=TOP)

        self.Pass_Fail_Button = Button(frame,text="Pass/Fail Will Be Shown Here",
                                       image="", width="15", background="green",
                                       anchor=W, justify=LEFT, padx=2)
        self.Pass_Fail_Button.pack(anchor=NE, fill=X, side=TOP)
        self.Pass_Fail_Button.bind("<ButtonRelease-1>", self.Pass_Fail_Button_Click)

        self.master.title("tk_nosy")

        self.oscillator = 1 # animates character on title
        self.oscillator_B = 0 # used to return statusbar to statusbar_bg

        self.lbframe = Frame( frame )
        self.lbframe.pack(anchor=SE, side=LEFT, fill=BOTH, expand=1)

        scrollbar = Scrollbar(self.lbframe, orient=VERTICAL)
        self.Text_1 = Text(self.lbframe, width="80", height="24",
                           yscrollcommand=scrollbar.set)
        scrollbar.config(command=self.Text_1.yview)
        scrollbar.pack(side=RIGHT, fill=Y)
        self.Text_1.pack(side=LEFT, fill=BOTH, expand=1)

        self.master.resizable(1,1) # Linux may not respect this

        self.numNosyCalls = 0
        self.need_to_pick_dir = 1

        print('sys.argv =',sys.argv)
        if len(sys.argv)>1:
            #  I don't care what the exception is, if there's a problem, bail
            # pylint: disable=W0702
            print( "Try Dir =",sys.argv[1] )
            try:
                dirname = os.path.abspath( sys.argv[1] )
                self.try_change_to_new_dir( dirname )
            except Exception:
                pass # let Alarm force dir selection
        else:
            try:
                if os.path.isdir(os.path.join( self.dirname, 'tests' )):
                    self.try_change_to_new_dir( self.dirname )
            except Exception:
                pass # let Alarm force dir selection


        print(LICENSE)

        self.defaultPyInterp = None # need to identify default python interpreter
        if Tk_Nosy.pythonInterpreterCollection == None:
            Tk_Nosy.pythonInterpreterCollection = PyInterpsOnSys()
            self.defaultPyInterp = Tk_Nosy.pythonInterpreterCollection.get_PI_obj_by_py_path( sys.executable )
            #print( Tk_Nosy.pythonInterpreterCollection )

        self.Alarm()


    def try_change_to_new_dir(self, dirname):
        """A legal abspath will switch to dirname."""
        #  I don't care what the exception is, if there's a problem, bail
        # pylint: disable=W0702
        if dirname:
            try:
                dirname = os.path.abspath( dirname )
            except:
                return # let Alarm force dir selection
        else:
            return

        self.dirname = dirname
        print('Selected dirname    =',dirname)
        fileD.clear()
        os.chdir( self.dirname )
        self.reset_statusbar_bg()
        self.need_to_pick_dir = 0

        #with open(NOSY_USER_DATA_FILE, 'w') as text_file:
        #    text_file.write( self.dirname )

        self.numNosyCalls = 0


    def reset_statusbar_bg(self):
        """Return status bar to default state"""
        self.statusbar.config(bg=self.statusbar_bg)
        self.statusMessage.set(self.dirname)

    def set_statusbar_bg(self, c):
        """Set status bar to show new color and message"""
        self.statusbar.config(bg=c)
        self.oscillator_B = 1 # will return to initial color after a few cycles

    def menu_Directory_Change_Dir(self):
        """Menu selection to set directory in which to run nosetests"""
        dirname = self.AskDirectory( title='Choose Directory For Nose Tests', initialdir=".")
        if dirname:
            self.try_change_to_new_dir( dirname )
        # >>>>>>insert any user code below this comment for section "menu_Directory_Change_Dir"
        # replace, delete, or comment-out the following
        print("called menu_Directory_Change_Dir")


    def menu_Run(self):
        """User initiates a nosetests run, not file change detection."""
        print("called menu_Run")
        self.callNosy()
    def rerun_tests(self,*args):
        self.menu_Run()


    def callNosy(self):


        """Run nosetests and display results"""
        self.numNosyCalls += 1

        runL = [(self.defaultPyInterp, self)]
        for PI,Popup in Tk_Nosy.concurrent_versionL:
            runL.append( (PI, Popup) )

        for PI, tkwindow in runL:
            tkwindow.Text_1.delete(1.0, END)

            # turn indicator button gray while running the tests
            tkwindow.Pass_Fail_Button.config(background="#999999",
                                             text='TESTING...',
                                             font=self.arial_12_bold_font)
        self.master.update()
        self.master.update_idletasks()

        for PI, tkwindow in runL:
            self.run_tkwin_nosetests( PI, tkwindow)

        self.master.winfo_toplevel().wm_geometry("")



    def run_tkwin_nosetests(self, PI, tkwindow):
        """Run nosetests for main python interpreter and any concurrent
             python interpreters.

           Update GUI to show results.
        """

        if PI.nose_version == None:
            # if nose was not installed last time we checked, check again
            PI.nose_version, err_msg = get_nose_version_info( PI.full_path )
            if PI.nose_version == None:
                print( "\a" )  # make beep
                s = 'Can not verify nose for:\nPython ' + PI.name()
                tkwindow.Pass_Fail_Button.config(background='orange',
                                                  text=s,
                                                  font=self.arial_12_bold_font)
                s = 'Please verify nose installed for:\n'+str(PI) +\
                    '\n\n' + err_msg+\
                    '\n\nFor install instructions see:\n'+\
                    'https://nose.readthedocs.org/en/latest/'
                tkwindow.Text_1.insert(END, s )
                ShowError(title='Can not verify nose', message=s)
                return

        # pylint: disable=W0201
        passedAllTests, numPassed, numFailed, numErrors, numSkipped, outputTextL = \
            run_nosetests(self.numNosyCalls, PI, display_test_details=self.display_test_details.get())

        max_len_s = 42
        num_lines = 1
        for s in outputTextL:
            tkwindow.Text_1.insert(END, s)
            sL = s.split('\n')
            for ss in sL:
                max_len_s = max(max_len_s, len(ss))
                num_lines += 1


        if self.numNosyCalls % 2:
            myFont = self.arial_12_bold_font
        else:
            myFont = self.arial_12_font

        if passedAllTests:
            s = 'PASSED'
            if numPassed > 1:
                s = 'PASSED ALL %i TESTS'%numPassed
            elif numPassed == 1:
                s = 'PASSED ONE TEST'


            bg="#00ff00"
            if numSkipped==1:
                s = 'passed with 1 SKIP'
                bg = "#00cc00"
            elif numSkipped > 1:
                s = 'passed with %i SKIPS'%numSkipped
                bg = "#00cc00"
            elif numPassed==0:
                s = 'No Tests Found'
                bg="#ff8000"
            tkwindow.Pass_Fail_Button.config(background=bg, text=s, font=myFont)

            #self.master.geometry('200x50')
        else:
            s = 'FAILED %i, ERRORS %i, SKIP %i, PASSED %i'%(numFailed,
                                                            numErrors, numSkipped, numPassed)
            tkwindow.Pass_Fail_Button.config(background="#ff0000", text=s, font=myFont)
            #self.master.geometry('516x385')


        # Show list of files being watched.
        #self.Text_1.insert(END, '_'*40+'\n')
        tkwindow.Text_1.insert(END, 'WATCHED *.py FILES'.center(40,'_') + '\n' )
        tkwindow.Text_1.insert(END, '%s%s..\n\n'%(self.dirname,os.path.sep) )
        num_lines += 3

        len_dirname = len( self.dirname )

        if self.display_watched_files.get()=='Y':
            keyL = list(fileD.keys())
            keyL.sort()
            lastdir = ''
            for key in keyL:
                dn = os.path.dirname( key )
                if dn != lastdir:
                    tkwindow.Text_1.insert(END, '..'+dn[len_dirname:] + '\n')
                    max_len_s = max(max_len_s, len(dn)+1)
                    lastdir = dn
                    num_lines += 1
                s = '    ' +os.path.basename( key )
                tkwindow.Text_1.insert(END, s + '\n')
                max_len_s = max(max_len_s, len(s)+1)
                num_lines += 1
        else:
            num_lines += 1
            tkwindow.Text_1.insert(END, '     %i files watched.\n'%len(fileD))

        tkwindow.Text_1.config(width=max_len_s)
        tkwindow.Text_1.config(height=min(40, num_lines))


    def bindConfigure(self, event):
        """Part of goofy main window setup in tkinter."""
        #  tkinter requires arguments, but I don't use them
        # pylint: disable=W0613
        if not self.initComplete:
            self.master.bind("<Configure>", self.Master_Configure)
            self.initComplete = 1

    def change_python_exe(self, full_path ):
        """Allow nosetests to be run under any available python version """
        PI = Tk_Nosy.pythonInterpreterCollection.add_interp( full_path )
        if PI:
            self.defaultPyInterp = PI


    def findNewPythonInterpreter(self):
        """Find a new python interpreter, one that is not already in
             the PyInterpsOnSys object (pythonInterpreterCollection).
        """
        if Tk_Nosy.pythonInterpreterCollection == None:
            print( 'pythonInterpreterCollection NOT yet initialized' )
            self.statusMessage.set('Interpreter Collection NOT initialized')
            self.set_statusbar_bg( '#FF9999' )
            return

        print('Open File')
        filetypes = [
            ('python executable','py*'),
            ('Any File','*.*')]
        pathopen = tkFileDialog.askopenfilename(parent=self.master,
                       title='Select Python Executable',
                       filetypes=filetypes,
                       initialdir=self.defaultPyInterp.full_path)

        if pathopen:
            self.change_python_exe( pathopen )
            self.menu_Run()

    def kill_popup_window(self, popup_name):
        """Close a popup window running another verions of python interpreter"""
        for itup, tup in enumerate(Tk_Nosy.concurrent_versionL):
            PI, Popup = tup
            s = '%s %s' % (PI.exe_name, PI.version_str)
            if popup_name == s:
                Tk_Nosy.concurrent_versionL.pop( itup )
                return True # removed popup from list
        return False # no popup found


    def launchAnotherPythonInterpreter(self):
        """Launch a pop-up window that concurrently runs another python version"""

        removeNameL=[self.defaultPyInterp.name()]
        for PI,Popup in Tk_Nosy.concurrent_versionL:
            removeNameL.append( PI.name() )

        piL = Tk_Nosy.pythonInterpreterCollection.get_PI_list( removeNameL=removeNameL )
        if len(piL)==0:
            print( 'All identified python interpreters in use.' )
        else:
            print( [pi.name() for pi in piL] )
            rbL = [PI.name() for PI in piL]
            dialog = Select_Py_Version(self.master, "Launch Another Python Version",
                                       dialogOptions={'rbL':rbL})
            if dialog.result:
                PI = Tk_Nosy.pythonInterpreterCollection.get_PI_obj_by_name(
                                                    dialog.result['selection'])

                s = '%s %s' % (PI.exe_name, PI.version_str)
                Popup = SatelliteWindow(self, self.master, s)
                Tk_Nosy.concurrent_versionL.append( (PI, Popup) )
                self.menu_Run()

    def changePythonVersion(self):
        """Change to a different python version.
           If the PyInterpsOnSys object (pythonInterpreterCollection) has been
           initialized, select from its list.
           Otherwise find the python interpreter executable
           (ex. python.exe or python)
        """
        if (Tk_Nosy.pythonInterpreterCollection == None) or \
           (Tk_Nosy.pythonInterpreterCollection.num_terps() == 0):
            # If there is no list of available python interpreters, look for python file
            print('Open File')
            filetypes = [
                ('python executable','py*'),
                ('Any File','*.*')]
            pathopen = tkFileDialog.askopenfilename(parent=self.master,
                           title='Select Python Executable',
                           filetypes=filetypes,
                           initialdir=self.defaultPyInterp.full_path)

            if pathopen:
                self.change_python_exe( pathopen )
                self.menu_Run()
        else:
            rbL = [PI.name() for PI in Tk_Nosy.pythonInterpreterCollection.interpL]
            dialog = Select_Py_Version(self.master, "Select Python Version",
                                       dialogOptions={'rbL':rbL})
            if dialog.result:
                PI = Tk_Nosy.pythonInterpreterCollection.get_PI_obj_by_name(
                                                   dialog.result['selection'] )
                pathopen = PI.full_path

                self.change_python_exe( pathopen )
                self.menu_Run()

    # return a string containing directory name
    def AskDirectory(self, title='Choose Directory', initialdir="."):
        """Run pop-up menu for user to select directory."""
    #    This is not an error
    # pylint: disable=E1101

        if sys.version_info < (3,):
            dirname = tkFileDialog.askdirectory(parent=self.master,
                                             initialdir=initialdir,title=title)
        else:
            dirname = tkFileDialog.askdirectory(parent=self.master,
                                             initialdir=initialdir,title=title)
        return dirname # <-- string


    def Master_Configure(self, event):
        """Part of tkinter main window initialization"""

        if event.widget != self.master:
            if self.w != -1:
                return
        x = int(self.master.winfo_x())
        y = int(self.master.winfo_y())
        w = int(self.master.winfo_width())
        h = int(self.master.winfo_height())
        if (self.x, self.y, self.w, self.h) == (-1,-1,-1,-1):
            self.x, self.y, self.w, self.h = x,y,w,h


        if self.w!=w or self.h!=h:
            #print "Master reconfigured... make resize adjustments"
            self.w=w
            self.h=h

    # pylint: disable=W0613
    def Pass_Fail_Button_Click(self, event):
        """Routine for user clicking Pass/Fail Button"""
        print('Arranging Windows by User Request')
        num_popups = len(Tk_Nosy.concurrent_versionL)
        DX = 50
        DY = 70
        x = 10
        y = 10 + num_popups * DY
        self.master.geometry( '+%i+%i'%(x,y))

        for PI,Popup in Tk_Nosy.concurrent_versionL:
            x += DX
            y -= DY
            Popup.geometry( '+%i+%i'%(x,y))



    # alarm function is called after specified number of milliseconds
    def SetAlarm(self, milliseconds=1000):
        """Reinitialize tkinter alarm mechanism as well as update seconds
           counter in main window title bar.
        """
        self.master.after( milliseconds, self.Alarm )

        self.oscillator += 1
        if self.oscillator > 5:
            self.oscillator = 0

        if self.oscillator_B>0:
            self.oscillator_B += 1
        if self.oscillator_B>5:
            self.oscillator_B = 0
            self.reset_statusbar_bg()

        pad = '|'*self.oscillator

        s = '%s (v%s)'%(self.defaultPyInterp.exe_name, self.defaultPyInterp.version_str)

        self.master.title('%i) %s '%(self.numNosyCalls , s + pad ))

        for PI,Popup in Tk_Nosy.concurrent_versionL:
            s = '%s (v%s)'%(PI.exe_name, PI.version_str)
            Popup.title( '%i) %s '%(self.numNosyCalls , s + pad ) )



    def Alarm(self):
        """Look for changed files every second, then reset alarm"""
        if self.need_to_pick_dir:
            dirname = self.AskDirectory( title='Choose Directory For Nose Tests', initialdir=".")
            self.try_change_to_new_dir( dirname )

        #first call to numberOfChangedFiles will be > 0 if any .py files are found
        elif numberOfChangedFiles( self.dirname ) > 0: # or self.numNosyCalls==0
            self.callNosy()

        self.SetAlarm()
示例#41
0
				nboard[x][y] = 0;
			else:
				nboard[x][y] = board[x][y]
	board, nboard = nboard, board;

def loop(*args):
	if state:
		makeTurn();
		redraw();
		canvas.after(10, func=loop);

def switchState(event):
	global state;
	state = not state;
	if state:
		event.widget.configure(text = "Stop");
		loop();
	else:
		event.widget.configure(text = "Start");
def save(*args):
	plistlib.writePlist(board, "sav.plist");
def load(*args):
	global board;
	board = plistlib.readPlist("sav.plist");
	redraw();

canvas.bind("<Button-1>",diviveIntervention);
startButton.bind("<Button-1>",switchState);
loadButton.bind("<Button-1>",load);
saveButton.bind("<Button-1>",save);
canvas.mainloop();
class SpeciesSearchDialog:
    def __init__(self, parent, caller):
        # main window
        self.parent = parent
        # dialog that called this second dialog
        self.caller = caller
        self.gui = Toplevel(parent.guiRoot)
        self.gui.grab_set()
        self.gui.focus()

        self.gui.columnconfigure(0, weight=1)
        self.gui.rowconfigure(1, weight=1)

        self.entrySearch = Entry(self.gui)

        self.buttonSearch = Button(self.gui, text=" Search ")
        self.buttonAdd = Button(self.gui, text=" Add Species ")
        self.buttonClose = Button(self.gui, text=" Close Window ")

        self.frameResults = Frame(self.gui)
        self.frameResults.columnconfigure(0, weight=1)
        self.frameResults.rowconfigure(0, weight=1)
        self.scrollResults = Scrollbar(self.frameResults, orient="vertical")
        self.scrollResults.grid(row=0, column=1, sticky="ns")
        self.listResults = Listbox(self.frameResults, width=70, height=20)
        self.listResults.grid(row=0, column=0, sticky="nswe")

        self.listResults.config(yscrollcommand=self.scrollResults.set)
        self.scrollResults.config(command=self.listResults.yview)

        self.entrySearch.grid(row=0, column=0, columnspan=2, sticky="we", padx=5, pady=5)
        self.frameResults.grid(row=1, column=0, columnspan=3, sticky="nswe", padx=5, pady=5)
        self.buttonSearch.grid(row=0, column=2, padx=5, pady=5, sticky="e")
        self.buttonAdd.grid(row=2, column=1, padx=5, pady=5, sticky="e")
        self.buttonClose.grid(row=2, column=2, padx=5, pady=5, sticky="e")

        self.gui.protocol("WM_DELETE_WINDOW", self.actionClose)
        self.buttonClose.bind("<ButtonRelease>", self.actionClose)
        self.buttonAdd.bind("<ButtonRelease>", self.actionAdd)
        self.buttonSearch.bind("<ButtonRelease>", self.actionSearch)
        self.entrySearch.bind("<Return>", self.actionSearch)

        self.gui.update()
        self.gui.minsize(self.gui.winfo_width(), self.gui.winfo_height())

        self.gui.mainloop()

    def actionAdd(self, event):
        try:
            selection = self.listResults.selection_get()
            selectionSplit = selection.split(":\t", 1)
            selectionSplit2 = selectionSplit[1].split("\t")
            if not (selectionSplit[0], selectionSplit2[0]) in self.parent.optimizer.speciesList:
                self.parent.optimizer.speciesList.append((selectionSplit[0], selectionSplit2[0].strip()))
            self.caller.gui.event_generate("<<Update>>")
        except tkinter.TclError:
            # no selection
            pass

    def actionSearch(self, event):
        query = self.entrySearch.get()
        if query:

            self.listResults.delete(0, "end")

            results = self.parent.optimizer.SPSUMHandler.search(query)
            # sort results by nr of CDS
            results = sorted(results.items(), reverse=True, key=lambda x: (int(x[1][1])))
            for name, (taxid, ncs) in results:
                self.listResults.insert("end", taxid + ":\t " + name + " \t(" + ncs + " CDS)")

    def actionClose(self, event=None):
        self.caller.gui.event_generate("<<Update>>", when="tail")
        self.gui.destroy()
示例#43
0
class SatelliteWindow( Toplevel ):
    """
    SatelliteWindow is used to display nosetests results of concurrently run
    python interpreters.
    """

    def cleanupOnQuit(self):
        """When closing popup, do a little clean up."""
        # I'm not sure that transient windows need this, but I'm trying to be careful
        self.MainWin.focus_set()

        if self.main_gui.kill_popup_window( self.statusMessage.get() ):
            self.destroy()
            self.main_gui.statusMessage.set('Closed: ' + self.statusMessage.get())
        else:
            self.main_gui.statusMessage.set('ERROR Closing: ' + self.statusMessage.get())
        self.main_gui.set_statusbar_bg( '#FF9999' )

    def __init__(self, main_gui, MainWin, mytitle, dx=30, dy=30):
        """Initialize popup"""
        Toplevel.__init__(self, MainWin)
        self.title(mytitle)

        x = MainWin.winfo_x()
        if x<10:
            x=10
        y = MainWin.winfo_y()
        if y<10:
            y=10
        # position over to the upper right
        self.geometry( '+%i+%i'%(x+dx,y+dy))

        self.config( highlightcolor='#FF99FF', highlightbackground='#FF99FF',
                     highlightthickness=2, borderwidth=10 )

        #===========

        # make a Status Bar
        self.statusMessage = StringVar()
        self.statusMessage.set(mytitle)
        self.statusbar = Label(self, textvariable=self.statusMessage, bd=1, relief=SUNKEN)
        self.statusbar.pack(anchor=SW, fill=X, side=BOTTOM)

        self.statusbar_bg = self.statusbar.cget('bg') # save bg for restore

        myFont = tkinter.font.Font(family="Arial", size=12, weight=tkinter.font.BOLD)
        self.statusbar.config( font=myFont )


        frame = Frame(self)
        frame.pack(anchor=NE, fill=BOTH, side=TOP)

        self.Pass_Fail_Button = Button(frame,text="Pass/Fail Will Be Shown Here",
                                       image="", width="15", background="green",
                                       anchor=W, justify=LEFT, padx=2)
        self.Pass_Fail_Button.pack(anchor=NE, fill=X, side=TOP)
        self.Pass_Fail_Button.bind("<ButtonRelease-1>", self.Pass_Fail_Button_Click)

        #self.title('%s %s.%s.%s '%(python_exe_name, python_major, python_minor, python_micro))

        self.oscillator = 1 # animates character on title
        self.oscillator_B = 0 # used to return statusbar to statusbar_bg

        self.lbframe = Frame( frame )
        self.lbframe.pack(anchor=SE, side=LEFT, fill=BOTH, expand=1)

        scrollbar = Scrollbar(self.lbframe, orient=VERTICAL)
        self.Text_1 = Text(self.lbframe, width="80", height="24", yscrollcommand=scrollbar.set)
        scrollbar.config(command=self.Text_1.yview)
        scrollbar.pack(side=RIGHT, fill=Y)
        self.Text_1.pack(side=LEFT, fill=BOTH, expand=1)

        self.resizable(1,1) # Linux may not respect this


        #===========

        self.MainWin = MainWin
        self.main_gui = main_gui

        # only main window can close this window
        self.protocol('WM_DELETE_WINDOW', self.cleanupOnQuit)

    def Pass_Fail_Button_Click(self, event):
        """Place-holder routine for user clicking Pass/Fail Button"""
        self.main_gui.Pass_Fail_Button_Click( event )


    def reset_statusbar_bg(self):
        """Return status bar to default state"""
        self.statusbar.config(bg=self.statusbar_bg)

    def set_statusbar_bg(self, c):
        """Set status bar to show new color and message"""
        self.statusbar.config(bg=c)
        self.oscillator_B = 1 # will return to initial color after a few cycles
示例#44
0
    def titlescreen(self):
        
        '''
        Main menu screen.
        Options:
            -display records
            -begin stat recording:
            -stat analysis
            -whatever
            -quit
        '''

        def button_highlight(event):
            event.widget.config(foreground = '#040D24',
                                background = '#FFCB00')
        def button_dehighlight(event):
            event.widget.config(foreground = '#C89632',
                                background = '#040D24')

        try: self.canvas.delete('all')
        except: pass
        
    
        self.titleimage = PhotoImage(file = 'titleimage.png')
        self.canvas.create_image((400, 300),
                                      image = self.titleimage)
        
        RecordingButton = TkButton(master = self,
                            text = 'Start Recording', cursor = 'hand1',
                            font = ('Helectiva', 20, 'bold'),
                            fg = '#C89632', bg = '#040D24', bd = 1,
                            command = self.playerselect)
        StatDisplayButton = TkButton(master = self,
                            text = 'Stat Display', cursor = 'hand1',
                            font = ('Helectiva', 20, 'bold'),
                            fg = '#C89632', bg = '#040D24', bd = 1,
                            command = self.statdisplay)
        AnalysisButton = TkButton(master = self,
                            text = 'Stat Analysis', cursor = 'hand1',
                            font = ('Helectiva', 20, 'bold'),
                            fg = '#C89632', bg = '#040D24', bd = 1,
                            command = self.statanalysis)
                                  
        RecordingButton.bind('<Enter>', button_highlight)
        StatDisplayButton.bind('<Enter>', button_highlight)
        AnalysisButton.bind('<Enter>', button_highlight)
        RecordingButton.bind('<Leave>', button_dehighlight)
        StatDisplayButton.bind('<Leave>', button_dehighlight)
        AnalysisButton.bind('<Leave>', button_dehighlight)
        
        self.canvas.create_window((322,186), window = RecordingButton,
                                  width = 323, height = 40)
        self.canvas.create_window((255,245), window = StatDisplayButton,
                                  width = 320, height = 40)
        self.canvas.create_window((204,308), window = AnalysisButton,
                                  width = 320, height = 41)
示例#45
0
class BaseExFrame:

    def __init__(self, master, current_unit, needs_span):

        self.master = master
        self.frame = create_content_frame(self.master)
        self.current_unit = current_unit
        self.needs_span = needs_span
        self.heading_column_span = 1
        self.heading_options = {'background': SEA_GREEN, 'font': ("Helvetica", 20), 'fg': "cyan"}
        self.entries = []
        self.prev_button = None
        self.next_button = None

    def show(self):
        self.heading_options['text'] = self.current_unit.name
        heading = Label(master=self.frame, cnf=self.heading_options)
        heading.grid(row=0, sticky=(N, S, E, W), columnspan=self.heading_column_span)

        pictures = create_images(self.frame, self._images_path())
        show_pictures(pictures, self.needs_span)

        self.entries = self._load_entries()

        self.prev_button = Button(self.frame, text="Назад")
        self._config_prev_button()
        self.prev_button.grid(row=3, column=0, sticky=(W, S))

        self.next_button = Button(self.frame, text="Продължи", state="disabled")
        self._config_next_button()
        self._grid_next_button()

        self.frame.grid(row=0, column=0)

    def hide(self):
        self.frame.grid_forget()

    def grid(self, row, column):
        self.frame.grid(row=row, column=column)

    def _images_path(self):
        pass

    def _load_entries(self):
        pass

    def _callback(self):
        pass

    def _config_prev_button(self):
        self.prev_button['width'] = 10

    def bind_prev_button(self, command):
        self.prev_button.bind("<Button-1>", command)

    def _config_next_button(self):
        self.next_button['width'] = 10

    def _grid_next_button(self):
        self.next_button.grid(row=3, column=self.heading_column_span - 1, sticky=(E, S))

    def bind_next_button(self, command):
        self.next_button.bind("<Button-1>", command)
示例#46
0
    def __init__(self, master, cluster_fname=None, fig_cols = 4, fig_rows = None):
        if not cluster_fname:
            cluster_fname = tkinter.filedialog.askopenfilename(parent=master,
                                                         title="List of genes",
                                                         initialdir=path.abspath('./'))
            print(cluster_fname)
        master.wm_title(cluster_fname)
        self.all_in_cluster = [line.strip() for line in open(cluster_fname)]
        print("No images", [item for item in self.all_in_cluster
                            if item not in has_img])
        self.imgs_in_cluster = [item for item in self.all_in_cluster
                                if item in has_img]
        print(self.imgs_in_cluster)
        print(len(self.imgs_in_cluster),  len(self.all_in_cluster), end=' ')
        print(len(self.imgs_in_cluster) / float(len(self.all_in_cluster)))
        self.img_lists = [[x for x in
                           st_5_with_lat[(st_5_with_lat['Name2'] == gene)
                                        +(st_5_with_lat['FBgn'] == gene)]['imgfile']]
                          for gene in self.imgs_in_cluster]
        num_genes = len(self.imgs_in_cluster)
        self.fig_rows, self.fig_cols = adjust_rows_cols(num_genes,
                                                        fig_rows or 0, fig_cols or 0)
        self.outfn = path.basename(cluster_fname)[:-4]+'.png'


        buttons = Frame(master)
        buttons.grid(row=1, column=1)
        savebutton = Button(buttons, text="Save", command=self.save)
        savebutton.grid(row=2, column = 2)
        Button(buttons, text="Add Row", command=self.add_row).grid(row=1,column=3)
        Button(buttons, text="Add Col", command=self.add_col).grid(row=3,column=3)
        Button(buttons, text="Remove Row",
               command=self.remove_row).grid(row=1,column=1)
        Button(buttons, text="Remove Col",
               command=self.remove_col).grid(row=3,column=1)

        images = Frame(master)
        images.grid(row=2, column=1)


        self.button_selected = IntVar(master, -1)
        self.images_selected = [0 for list in self.img_lists]
        out_name = '{}.png.txt'.format(path.splitext(path.basename(cluster_fname))[0])
        print(out_name)
        if path.exists(out_name):
            for i, line in enumerate(open(out_name)):
                self.images_selected[i] = int(line.split()[0].strip())
        self.radio_buttons = []
        self.image_files = []
        self.x_flipped = []
        for i, gene in enumerate(self.imgs_in_cluster):
            for image_file_name in self.img_lists[i]:
                try:
                    raise IOError
                    image_file = imget(image_file_name)
                    import_image = Image.open(image_file)
                except (IOError, OSError):
                    try:
                        image_file = imget_bdgp(image_file_name)
                        import_image = Image.open(image_file)
                    except Exception as exc:
                        print(exc)
                        print(image_file_name, gene)
                        raise exc
                    import_image = import_image.resize((180,80), Image.ANTIALIAS)
                except urllib.error.HTTPError as exc:
                    print(image_file_name, gene)
                    raise exc
                embryo_image = ImageTk.PhotoImage(import_image)

            label = Label(image=embryo_image)
            label.image = embryo_image
            b = Button(images,
                       image = label.image,
                       width = 200,
                       height= 100,
                       text=gene,
                       #text = image_file,
                       #variable=self.button_selected,
                       #command=self.handle_button_click,
                       #value = i+1,
                       #indicatoron=0,
                      )
            #ToolTip(b, gene)
            b.bind("<Button-1>", self.handle_button_click)
            b.bind("<Button-2>", self.handle_button_click)
            b.grid(row = i // self.fig_cols, column = i % self.fig_cols)
            #w = Tix.Balloon(master, message=gene)
            #w.bind_widget(b)

            self.image_files.append(image_file)
            self.radio_buttons.append(b)
            self.x_flipped.append(False)
示例#47
0
    def view_details(self, Medikom, id):
        self.selected_id = id
        self.overview(Medikom)
        entry_results, attachments = Medikom.get_entry(id)
        ts, title, notes = entry_results
        ts = self.format_ts(ts)[:-3]
        details_text = 'Details zu %s (zuletzt geändert am %s)' % (title, ts)
        details_label = Label(
            self, text=details_text, font='Liberation 10', fg='Black', anchor='w')
        details_label.place(
            x=self.SPACE_TWO,
            y=(self.n + 2) * (self.ROW_HIGHT + self.ROW_SPACE),
            width=self.WIN_WIDTH - self.SPACE_TWO, height=self.ROW_HIGHT)

        details_label.bind(sequence='<Button-1>',
            func=Callable(self.view_edit_title, Medikom, id, title))

        # add attachment button and list attachments
        attach_button = Button(
            self, text='Neuer Anhang',
            command=lambda: self.attach_file(Medikom, id))
        attach_button.place(
            x=self.SPACE_TWO,
            y=(self.n + 3) * (self.ROW_HIGHT + self.ROW_SPACE),
            width=self.WIN_WIDTH / 8, height=self.ROW_HIGHT)
        if attachments:
            xpos = (1.5 * self.SPACE_TWO) + (self.WIN_WIDTH / 8)
            for i, attachment in enumerate(attachments):
                attachment = attachment[0]
                filename = ''
                if '\\' in attachment:
                    filename = attachment.split('\\')[-1]
                elif '/' in attachment:
                    filename = attachment.split('/')[-1]
                width = len(filename) * 7.2
                attachment_button = Button(
                    self, text=filename, font='Courier 9', fg="blue",
                    command=Callable(self.open_attachment, attachment))
                attachment_button.place(
                    x=xpos,
                    y=(self.n + 3) * (self.ROW_HIGHT + self.ROW_SPACE),
                    width=width, height=self.ROW_HIGHT)
                xpos = xpos + width + (self.SPACE_TWO/2)
                attachment_button.config(relief='flat')
                attachment_button.bind(sequence='<Button-3>',
                    func=Callable(self.unattach_file, Medikom, id, attachment))

        # text element and scrollbar
        textframe = Text(
            self, font='Liberation 12', height=self.TEXT_FRAME_LINES,
            width=int(self.WIN_WIDTH / 4))
        scrollbar = Scrollbar(self)
        textframe.place(
            x=self.SPACE_TWO,
            y=(self.n + 4) * (self.ROW_HIGHT + self.ROW_SPACE),
            width=self.WIN_WIDTH - self.SPACE_ONE - 10,
            height=self.ROW_HIGHT * self.TEXT_FRAME_LINES)
        scrollbar.place(
            x=self.SPACE_TWO + self.WIN_WIDTH - self.SPACE_ONE - 10,
            y=(self.n + 4) * (self.ROW_HIGHT + self.ROW_SPACE),
            width=10,
            height=self.ROW_HIGHT * self.TEXT_FRAME_LINES)
        scrollbar.config(command=textframe.yview)
        textframe.config(yscrollcommand=scrollbar.set)
        textframe.insert(END, notes)

        # update button
        update_button = Button(
            self, text='Text Aktualisieren',
            command=lambda: self.update_entry_notes(
                Medikom, id, textframe.get(1.0, END)))
        update_button.place(
            x=self.WIN_WIDTH / 2 - 0.125 * self.WIN_WIDTH,
            y=(self.n + 4) * (self.ROW_HIGHT + self.ROW_SPACE) + (self.ROW_HIGHT * self.TEXT_FRAME_LINES + 5),
            width=self.WIN_WIDTH/4, height=self.ROW_HIGHT)
示例#48
0
class _Tk_Nosy(object):
    """This class is the tkinter GUI object"""
    def __init__(self, master):
        self.dirname = os.path.abspath( os.curdir )

        self.initComplete = 0
        self.master = master
        self.x, self.y, self.w, self.h = -1,-1,-1,-1

        # bind master to <Configure> in order to handle any resizing, etc.
        # postpone self.master.bind("<Configure>", self.Master_Configure)
        self.master.bind('<Enter>', self.bindConfigure)

        self.menuBar = Menu(master, relief = "raised", bd=2)


        top_Directory = Menu(self.menuBar, tearoff=0)
        top_Directory.add("command", label = "Change Dir", command = self.menu_Directory_Change_Dir)
        self.menuBar.add("cascade", label="Directory", menu=top_Directory)


        #top_Snippet = Menu(self.menuBar, tearoff=0)

        self.menuBar.add("command", label = "Run", command = self.menu_Run)

        master.config(menu=self.menuBar)

        # make a Status Bar
        self.statusMessage = StringVar()
        self.statusMessage.set(self.dirname)
        self.statusbar = Label(self.master, textvariable=self.statusMessage, bd=1, relief=SUNKEN)
        self.statusbar.pack(anchor=SW, fill=X, side=BOTTOM)

        self.statusbar_bg = self.statusbar.cget('bg') # save bg for restore

        myFont = tkinter.font.Font(family="Arial", size=12, weight=tkinter.font.BOLD)
        self.statusbar.config( font=myFont )


        frame = Frame(master)
        frame.pack(anchor=NE, fill=BOTH, side=TOP)

        self.Pass_Fail_Button = Button(frame,text="Pass/Fail Will Be Shown Here",
                                       image="", width="15", background="green",
                                       anchor=W, justify=LEFT, padx=2)
        self.Pass_Fail_Button.pack(anchor=NE, fill=X, side=TOP)
        self.Pass_Fail_Button.bind("<ButtonRelease-1>", self.Pass_Fail_Button_Click)

        #self.master.title("tk_nosy")
        self.master.title('Python %s.%s.%s '%sys.version_info[:3])
        self.oscillator = 1 # animates character on title
        self.oscillator_B = 0 # used to return statusbar to statusbar_bg

        self.lbframe = Frame( frame )
        self.lbframe.pack(anchor=SE, side=LEFT, fill=BOTH, expand=1)

        scrollbar = Scrollbar(self.lbframe, orient=VERTICAL)
        self.Text_1 = Text(self.lbframe, width="80", height="24", yscrollcommand=scrollbar.set)
        scrollbar.config(command=self.Text_1.yview)
        scrollbar.pack(side=RIGHT, fill=Y)
        self.Text_1.pack(side=LEFT, fill=BOTH, expand=1)

        self.master.resizable(1,1) # Linux may not respect this

        self.numNosyCalls = 0
        self.need_to_pick_dir = 1

        if len(sys.argv)>1:
            #  I don't care what the exception is, if there's a problem, bail
            # pylint: disable=W0702
            try:
                dirname = os.path.abspath( sys.argv[1] )
                self.try_change_to_new_dir( dirname )
            except:
                pass # let Alarm force dir selection
        else:
            try:
                if os.path.isdir(os.path.join( self.dirname, 'tests' )):
                    self.try_change_to_new_dir( self.dirname )
            except:
                pass # let Alarm force dir selection
                

        print(LICENSE)
        self.Alarm()


    def try_change_to_new_dir(self, dirname):
        """A legal abspath will switch to dirname."""
        #  I don't care what the exception is, if there's a problem, bail
        # pylint: disable=W0702
        if dirname:
            try:
                dirname = os.path.abspath( dirname )
            except:
                return # let Alarm force dir selection
        else:
            return

        self.dirname = dirname
        print('Selected dirname    =',dirname)
        fileD.clear()
        os.chdir( self.dirname )
        self.reset_statusbar_bg()
        self.need_to_pick_dir = 0

        #with open(NOSY_USER_DATA_FILE, 'w') as text_file:
        #    text_file.write( self.dirname )

        self.numNosyCalls = 0


    def reset_statusbar_bg(self):
        """Return status bar to default state"""
        self.statusbar.config(bg=self.statusbar_bg)
        self.statusMessage.set(self.dirname)

    def set_statusbar_bg(self, c):
        """Set status bar to show new color and message"""
        self.statusbar.config(bg=c)
        self.oscillator_B = 1 # will return to initial color after a few cycles

    def menu_Directory_Change_Dir(self):
        """Menu selection to set directory in which to run nosetests"""
        dirname = self.AskDirectory( title='Choose Directory For Nose Tests', initialdir=".")
        if dirname:
            self.try_change_to_new_dir( dirname )
        # >>>>>>insert any user code below this comment for section "menu_Directory_Change_Dir"
        # replace, delete, or comment-out the following
        print("called menu_Directory_Change_Dir")


    def menu_Run(self):
        """User initiates a nosetests run, not file change detection."""
        print("called menu_Run")
        self.callNosy()

    def callNosy(self):
        """Run nosetests and display results"""
        self.numNosyCalls += 1
        self.Text_1.delete(1.0, END)

        # turn indicator button gray while running the tests
        myFont = tkinter.font.Font(family="Arial", size=12, weight=tkinter.font.BOLD)
        self.Pass_Fail_Button.config(background="#999999", text='TESTING...', font=myFont)
        self.master.update()
        self.master.update_idletasks()

        # pylint: disable=W0201
        self.passedAllTests, numPassed, numFailed, numErrors, numSkipped, outputTextL = \
            run_nosetests(self.numNosyCalls)

        max_len_s = 42
        num_lines = 1
        for s in outputTextL:
            self.Text_1.insert(END, s)
            sL = s.split('\n')
            for ss in sL:
                max_len_s = max(max_len_s, len(ss))
                num_lines += 1


        if self.numNosyCalls % 2:
            myFont = tkinter.font.Font(family="Arial", size=12, weight=tkinter.font.BOLD)
        else:
            myFont = tkinter.font.Font(family="Arial", size=12)

        if self.passedAllTests:
            s = 'PASSED'
            if numPassed > 1:
                s = 'PASSED ALL %i TESTS'%numPassed
            elif numPassed == 1:
                s = 'PASSED ONE TEST'


            bg="#00ff00"
            if numSkipped==1:
                s = 'passed with 1 SKIP'
                bg = "#00cc00"
            elif numSkipped > 1:
                s = 'passed with %i SKIPS'%numSkipped
                bg = "#00cc00"
            elif numPassed==0:
                s = 'No Tests Found'
                bg="#ff8000"
            self.Pass_Fail_Button.config(background=bg, text=s, font=myFont)

            #self.master.geometry('200x50')
        else:
            s = 'FAILED %i, ERRORS %i, SKIP %i, PASSED %i'%(numFailed,
                                                            numErrors, numSkipped, numPassed)
            self.Pass_Fail_Button.config(background="#ff0000", text=s, font=myFont)
            #self.master.geometry('516x385')


        # Show list of files being watched.
        #self.Text_1.insert(END, '_'*40+'\n')
        self.Text_1.insert(END, 'WATCHED *.py FILES'.center(40,'_') + '\n' )
        self.Text_1.insert(END, '%s%s..\n\n'%(self.dirname,os.path.sep) )
        num_lines += 3

        len_dirname = len( self.dirname )

        keyL = list(fileD.keys())
        keyL.sort()
        lastdir = ''
        for key in keyL:
            dn = os.path.dirname( key )
            if dn != lastdir:
                self.Text_1.insert(END, '..'+dn[len_dirname:] + '\n')
                max_len_s = max(max_len_s, len(dn)+1)
                lastdir = dn
                num_lines += 1
            s = '    ' +os.path.basename( key )
            self.Text_1.insert(END, s + '\n')
            max_len_s = max(max_len_s, len(s)+1)
            num_lines += 1

        self.Text_1.config(width=max_len_s)
        self.Text_1.config(height=min(40, num_lines))
        self.master.winfo_toplevel().wm_geometry("")


    def bindConfigure(self, event):
        """Part of goofy main window setup in tkinter."""
        #  tkinter requires arguments, but I don't use them
        # pylint: disable=W0613
        if not self.initComplete:
            self.master.bind("<Configure>", self.Master_Configure)
            self.initComplete = 1



    # return a string containing directory name
    def AskDirectory(self, title='Choose Directory', initialdir="."):
        """Run pop-up menu for user to select directory."""
    #    This is not an error
    # pylint: disable=E1101

        if sys.version_info < (3,):
            dirname = tkFileDialog.askdirectory(parent=self.master,
                                                initialdir=initialdir,title=title)
        else:
            dirname = tkinter.filedialog.askdirectory(parent=self.master,
                                                      initialdir=initialdir,title=title)
        return dirname # <-- string


    def Master_Configure(self, event):
        """Part of tkinter main window initialization"""

        if event.widget != self.master:
            if self.w != -1:
                return
        x = int(self.master.winfo_x())
        y = int(self.master.winfo_y())
        w = int(self.master.winfo_width())
        h = int(self.master.winfo_height())
        if (self.x, self.y, self.w, self.h) == (-1,-1,-1,-1):
            self.x, self.y, self.w, self.h = x,y,w,h


        if self.w!=w or self.h!=h:
            #print "Master reconfigured... make resize adjustments"
            self.w=w
            self.h=h

    def Pass_Fail_Button_Click(self, event):
        """Place-holder routine for user clicking Pass/Fail Button"""
        pass

    # alarm function is called after specified number of milliseconds
    def SetAlarm(self, milliseconds=1000):
        """Reinitialize tkinter alarm mechanism as well as update seconds
           counter in main window title bar.
        """
        self.master.after( milliseconds, self.Alarm )

        self.oscillator += 1
        if self.oscillator > 5:
            self.oscillator = 0

        if self.oscillator_B>0:
            self.oscillator_B += 1
        if self.oscillator_B>5:
            self.oscillator_B = 0
            self.reset_statusbar_bg()

        pad = '|'*self.oscillator

        #self.master.title("%i) tk_nosy "%self.numNosyCalls + pad )
        s = '%s.%s.%s '%sys.version_info[:3]
        self.master.title('%i) Python %s '%(self.numNosyCalls , s + pad ))


    def Alarm(self):
        """Look for changed files every second, then reset alarm"""
        if self.need_to_pick_dir:
            dirname = self.AskDirectory( title='Choose Directory For Nose Tests', initialdir=".")
            self.try_change_to_new_dir( dirname )

        #first call to numberOfChangedFiles will be > 0 if any .py files are found
        elif numberOfChangedFiles( self.dirname ) > 0: # or self.numNosyCalls==0
            self.callNosy()

        self.SetAlarm()
示例#49
0
文件: main.py 项目: kr1/roqba
    def create_voices(self):
        voice_ids = ['1', '2', '3', '4']
        SCALES = OrderedDict([
                  ('pan_pos', {'min': -1, 'max': 1, 'start': 0.5, 'res': 0.001}),
                  ('volume', {'min': 0, 'max': 1, 'start': 0.666, 'res': 0.001}),
                  ('slide_duration_msecs', {'min': 0, 'max': 2000, 'start': 60, 'res': 1}),
                  ('slide_duration_prop', {'min': 0, 'max': 2, 'start': 0.666, 'res': 0.001}),
                  ('binaural_diff', {'min': 0, 'max': 66, 'start': 0.2, 'res': 0.01})
                ])

        for vid in voice_ids:
            counter = 0
            for sca in SCALES:
                name = 'voice_' + vid + '_' + sca
                setattr(self, 'min_' + name, SCALES[sca]['min'])
                setattr(self, 'max_' + name, SCALES[sca]['max'])
                this_sca = Scale(self, label=sca, orient=HORIZONTAL,
                                 from_=getattr(self, 'min_' + name),
                                 to=getattr(self, 'max_' + name),
                                 resolution=SCALES[sca]['res'])
                this_sca.enable = ('enable' in list(SCALES[sca].keys()) and
                                   SCALES[sca]['enable'] or None)
                this_sca.disable = ('disable' in list(SCALES[sca].keys()) and
                                    SCALES[sca]['disable'] or None)
                this_sca.grid(column=int(2 + int(vid)), row=counter, sticky=E + W)
                this_sca.bind("<ButtonRelease>", self.scale_handler)
                this_sca.ref = name
                counter += 1
        CHECK_BUTTONS = OrderedDict(
                 [('mute', False),
                  ('automate_binaural_diffs', True),
                  ('automate_note_duration_prop', True),
                  ('use_proportional_slide_duration', {'val': True, 'label': 'proportional slide'}),
                  ('automate_pan', True),
                  ('automate_wavetables', True)])
        for vid in voice_ids:
            counter = 0
            cb_frame = LabelFrame(self, text="Voice {0} - Automation".format(vid))
            setattr(self, 'voice_' + vid + '_cb_frame', cb_frame)
            for cb in CHECK_BUTTONS:
                options = CHECK_BUTTONS[cb]
                name = 'voice_' + vid + '_' + cb
                if isinstance(options, dict) and 'label' in list(options.keys()):
                    label = options['label']
                else:
                    label = cb[9:] if cb[:9] == 'automate_' else cb
                setattr(self, name, IntVar(
                    value=type(options) == dict and options['val'] or options))
                self.this_cb = Checkbutton(cb_frame, text=label, variable=getattr(self, name))
                self.this_cb.bind('<Button-1>', self.check_boxes_handler)
                self.this_cb.disable = None
                self.this_cb.grid(sticky=W, column=0, row=counter)
                self.this_cb.ref = name
                counter += 1
            # add trigger wavetable-button
            trigWavetableButton = Button(cb_frame, text='Next Wavetable')
            trigWavetableButton.bind('<Button-1>', self.trigger_waveform_handler)
            trigWavetableButton.ref = 'voice_' + vid + "_trigger_wavetable"
            trigWavetableButton.grid(row=counter)
            cb_frame.grid(column=int(vid) + 2, row=5, sticky=E + W + N, rowspan=8)
        for vid in voice_ids:
            generation_types = ["random", "random_harmonic", "harmonic"]
            partial_pools = ["even", "odd", "all"]
            prefix = 'voice_' + vid + '_'
            types_name = prefix + 'wavetable_generation_type'
            pools_name = prefix + 'partial_pool'
            setattr(self, types_name, StringVar())
            getattr(self, types_name).set("random")
            setattr(self, pools_name, StringVar())
            getattr(self, pools_name).set("all")
            target_frame = getattr(self, 'voice_' + vid + '_cb_frame')
            gen_typ_frame = LabelFrame(target_frame, text="type")
            gen_typ_frame.grid(row=len(target_frame.winfo_children()), sticky=W)
            for gen_t in generation_types:
                gen_t_entry = Radiobutton(gen_typ_frame, value=gen_t, text=gen_t, anchor=W,
                                          variable=getattr(self, types_name))
                gen_t_entry.bind('<ButtonRelease-1>', self.wt_handler)
                gen_t_entry.ref = types_name
                gen_t_entry.grid(row=len(gen_typ_frame.winfo_children()), sticky=W)
            pp_frame = LabelFrame(target_frame, text="harmonics")
            for pp in partial_pools:
                pp_entry = Radiobutton(pp_frame, value=pp, text=pp, anchor=W,
                                       variable=getattr(self, pools_name))
                pp_entry.bind('<ButtonRelease-1>', self.wt_handler)
                pp_entry.ref = pools_name
                pp_entry.grid(row=len(pp_frame.winfo_children()), sticky=E + W)
            this_num_partials = Scale(pp_frame, label='number of harmonics', orient=HORIZONTAL,
                                      from_=1, to=24, resolution=1)
            this_num_partials.ref = prefix + 'num_partials'
            this_num_partials.grid(column=0, row=len(pp_frame.winfo_children()), sticky=E + W)
            this_num_partials.bind("<ButtonRelease>", self.scale_handler)
            pp_frame.grid(row=len(target_frame.winfo_children()), sticky=E + W)
class OptimizerMainWindow:
    """
    classdocs
    """

    # TODO: change that name
    def reactToClick(self, event):
        a = AddRestrictionDialog(self)

    def __init__(self, optimizer):

        # always have a reference to model/controller
        self.optimizer = optimizer

        # setup main GUI and make stretchable
        self.guiRoot = Tk()
        self.guiRoot.title("OPTIMIZR")
        self.guiRoot.columnconfigure(1, weight=1)
        self.guiRoot.rowconfigure(0, weight=1)

        # left (settings) and right (sequences) part
        self.frameLeft = Frame(self.guiRoot)
        self.frameLeft.grid(row=0, column=0, sticky=W + E + N + S)
        self.frameLeft.columnconfigure(0, weight=1)
        self.frameRight = Frame(self.guiRoot)
        self.frameRight.grid(row=0, column=1, sticky=W + E + N + S)
        self.frameRight.columnconfigure(0, weight=1)
        self.frameRight.rowconfigure(0, weight=1)
        self.frameRight.rowconfigure(1, weight=1)

        self.frameSpeciesControll = LabelFrame(self.frameLeft, text="Species", pady=10, padx=10)
        self.frameSpeciesControll.columnconfigure(1, weight=1)
        self.frameOptimizationControll = LabelFrame(self.frameLeft, text="Optimization", pady=10, padx=10)
        self.frameRestrictionControll = LabelFrame(self.frameLeft, text="Restriction Enzymes", pady=10, padx=10)
        self.frameSpeciesControll.grid(row=0, column=0, sticky=W + E, padx=10, pady=10)
        self.frameOptimizationControll.grid(row=1, column=0, sticky=W + E, padx=10, pady=10)
        self.frameRestrictionControll.grid(row=2, column=0, sticky=W + E, padx=10, pady=10)

        # Species Controll
        Label(self.frameSpeciesControll, text="Source:").grid(row=0, column=0)
        Label(self.frameSpeciesControll, text="Target:").grid(row=1, column=0)

        self.comboSourceSpecies = Combobox(self.frameSpeciesControll, state="readonly")
        self.comboSourceSpecies.grid(row=0, column=1, pady=5, sticky="ew")
        self.comboTargetSpecies = Combobox(self.frameSpeciesControll, state="readonly")
        self.comboTargetSpecies.grid(row=1, column=1, pady=5, sticky="we")
        self.buttonSpeciesList = Button(self.frameSpeciesControll, text="Edit Species List")
        self.buttonSpeciesList.grid(row=2, column=1, pady=5, sticky="e")

        self.comboSourceSpecies.bind("<<ComboboxSelected>>", self.actionOptimizerSettingsChanged)
        self.comboTargetSpecies.bind("<<ComboboxSelected>>", self.actionOptimizerSettingsChanged)

        # Optimization Controll
        Label(self.frameOptimizationControll, text="Optimization Strategy:").grid(row=0, column=0)
        self.comboOptimizationStrategy = Combobox(self.frameOptimizationControll, state="readonly")
        self.comboOptimizationStrategy.grid(row=0, column=1)
        self.comboOptimizationStrategy["values"] = self.optimizer.possibleOptimizationStrategies
        self.comboOptimizationStrategy.bind("<<ComboboxSelected>>", self.actionOptimizerSettingsChanged)

        # Restriction Enzymes
        self.listRestriction = Listbox(self.frameRestrictionControll)
        self.listRestriction.grid(row=0, column=0, columnspan=3, pady=5, sticky=W + E)
        self.frameRestrictionControll.columnconfigure(0, weight=1)
        self.buttonRestricionAdd = Button(self.frameRestrictionControll, text=" + ")
        self.buttonRestricionDel = Button(self.frameRestrictionControll, text=" - ")
        self.buttonRestricionAdd.grid(row=1, column=1, padx=5)
        self.buttonRestricionDel.grid(row=1, column=2, padx=5)

        # Source Sequence Frame
        self.frameSourceSequence = LabelFrame(self.frameRight, text="Source Sequence", padx=10, pady=10)
        self.frameResultSequence = LabelFrame(self.frameRight, text="Result Sequence", padx=10, pady=10)
        self.frameSourceSequence.grid(row=0, column=0, sticky="wens", padx=10, pady=10)
        self.frameResultSequence.grid(row=1, column=0, sticky="wens", padx=10, pady=10)

        self.buttonSourceLoad = Button(self.frameSourceSequence, text=" Load ")
        self.textSourceSeq = ScrolledText(self.frameSourceSequence, height=10)
        self.buttonSourceLoad.grid(row=0, column=1, sticky="e", pady=5)
        self.textSourceSeq.grid(row=1, column=0, columnspan=2, sticky="wens")
        self.frameSourceSequence.columnconfigure(0, weight=1)
        self.frameSourceSequence.rowconfigure(1, weight=1)
        self.textSourceSeq.frame.columnconfigure(1, weight=1)
        self.textSourceSeq.frame.rowconfigure(0, weight=1)

        self.buttonOptimize = Button(self.frameResultSequence, text=" OPTIMIZE! ")
        self.buttonOptimize.bind("<ButtonRelease>", self.actionOptimize)

        self.buttonRemoveRestriction = Button(self.frameResultSequence, text=" RESTRICTION-B-GONE! ")
        self.buttonRemoveRestriction.bind("<ButtonRelease>", self.actionRemoveRestricion)

        self.buttonSaveResult = Button(self.frameResultSequence, text=" Save ")
        self.textResultSequence = ScrolledText(self.frameResultSequence, height=10)
        self.buttonOptimize.grid(column=0, row=0, pady=5, sticky="w")
        self.buttonRemoveRestriction.grid(column=1, row=0, pady=5, padx=10, sticky="w")
        self.textResultSequence.grid(row=1, column=0, columnspan=4, sticky="wens")
        self.buttonSaveResult.grid(row=2, column=3, pady=5, sticky="e")
        self.frameResultSequence.columnconfigure(2, weight=1)
        self.frameResultSequence.rowconfigure(1, weight=1)
        self.textResultSequence.frame.columnconfigure(1, weight=1)
        self.textResultSequence.frame.rowconfigure(0, weight=1)

        self.textSourceSeq.bind("<<Modified>>", self.actionSequenceModified)
        self.textResultSequence.bind("<<Modified>>", self.actionSequenceModified)

        # generate color tags for textboxes
        for i in range(101):

            # green for normal codons
            (r, g, b) = colorsys.hsv_to_rgb(210 / 360, i / 100, 1.0)
            colorHex = "#%02x%02x%02x" % (int(r * 255), int(g * 255), int(b * 255))

            self.textSourceSeq.tag_config("normal" + str(i), background=colorHex)
            self.textResultSequence.tag_config("normal" + str(i), background=colorHex)

            # red for codons with restriction sites
            (r, g, b) = colorsys.hsv_to_rgb(5 / 360, i / 100, 1.0)
            colorHex = "#%02x%02x%02x" % (int(r * 255), int(g * 255), int(b * 255))

            self.textSourceSeq.tag_config("restrict" + str(i), background=colorHex)
            self.textResultSequence.tag_config("restrict" + str(i), background=colorHex)

        # Set (minimum + max) Window size
        self.guiRoot.update()
        self.guiRoot.minsize(self.guiRoot.winfo_width(), self.guiRoot.winfo_height())

        self.buttonRestricionAdd.bind("<ButtonRelease>", self.reactToClick)
        self.buttonRestricionDel.bind("<ButtonRelease>", self.actionRestrictionEnzymeDelete)
        self.buttonSpeciesList.bind("<ButtonRelease>", self.actionEditSpeciesButton)

        self.buttonSourceLoad.bind("<ButtonRelease>", self.actionLoadSequence)
        self.buttonSaveResult.bind("<ButtonRelease>", self.actionSaveSequence)

        # TEST
        #         self.listRestriction.insert("end", "EcoRI")
        #         self.listRestriction.insert("end", "BamHI")
        #

        # dummy event to manually trigger update
        self.guiRoot.bind("<<Update>>", self.actionUpdate)

        self.actionUpdate(None)

        self.guiRoot.mainloop()

    def actionRestrictionEnzymeDelete(self, event):
        try:
            selectedEnzyme = self.listRestriction.selection_get()
            self.optimizer.restrictionEnzymeList.remove(selectedEnzyme)
            self.guiRoot.event_generate("<<Update>>")
        except tkinter.TclError:
            # no selection
            pass

    def actionUpdate(self, event):
        #         print("update called")

        # clear list of restriction enzymes
        self.listRestriction.delete(0, "end")
        for r in self.optimizer.restrictionEnzymeList:
            self.listRestriction.insert("end", r)

        self.comboSourceSpecies.delete(0, "end")
        self.comboTargetSpecies.delete(0, "end")

        speciesValues = list()
        for (taxid, name) in self.optimizer.speciesList:
            speciesValues.append(taxid + ": " + name)

        self.comboSourceSpecies["values"] = speciesValues
        self.comboTargetSpecies["values"] = speciesValues

        if self.comboSourceSpecies.get() not in speciesValues:
            self.comboSourceSpecies.set("")
        if self.comboTargetSpecies.get() not in speciesValues:
            self.comboTargetSpecies.set("")

        self.textSourceSeq.edit_modified(True)
        self.textResultSequence.edit_modified(True)

        self.optimizer.saveConfig("config.ini")

    def actionEditSpeciesButton(self, event):
        speciesListDialog = SpeciesListDialog(self)

    def actionOptimizerSettingsChanged(self, event=None):
        #         print("Something happened")
        strategy = self.comboOptimizationStrategy.get()
        sourceString = self.comboSourceSpecies.get()
        targetString = self.comboTargetSpecies.get()

        if not (strategy and sourceString and targetString):
            return

        sourceTaxid = sourceString.split(":")[0]
        targetTaxid = targetString.split(":")[0]

        self.optimizer.setOptimizer(sourceTaxid, targetTaxid, strategy)

        self.textSourceSeq.edit_modified(True)
        self.textResultSequence.edit_modified(True)

    #         self.optimizer.testPrint()

    def actionOptimize(self, event=None):
        self.optimizer.runOptimization()
        self.textSourceSeq.edit_modified(True)
        self.textResultSequence.edit_modified(True)

    def actionRemoveRestricion(self, event=None):
        self.optimizer.runRestricionRemoval()
        self.textSourceSeq.edit_modified(True)
        self.textResultSequence.edit_modified(True)

    def actionSequenceModified(self, event=None):
        # necessary if, otherwise -> infinite loop
        if self.textSourceSeq.edit_modified():

            seq = self.textSourceSeq.get("1.0", "end").strip()
            seq = stripCharsNotInList(seq.upper(), ["A", "C", "G", "T"])
            self.optimizer.setSourceSeq(seq)

            oldInsert = self.textSourceSeq.index("insert")
            self.textSourceSeq.delete("1.0", "end")

            sourceCodons = self.optimizer.getCodonsForPrint(True)
            if not sourceCodons:
                self.textSourceSeq.insert("end", self.optimizer.sourceSequence)
            else:
                for (co, sc, r) in sourceCodons:
                    if sc:
                        if not r:
                            self.textSourceSeq.insert("end", co, "normal" + str(int(sc * 100)))
                            # print("normal"+str(int(sc*100)))
                        else:
                            self.textSourceSeq.insert("end", co, "restrict" + str(int(sc * 100)))
                    else:
                        # remainder without color
                        self.textSourceSeq.insert("end", co)

            self.textSourceSeq.mark_set("insert", oldInsert)

            # reset the modified status at the very end
            self.textSourceSeq.edit_modified(False)

        if self.textResultSequence.edit_modified():

            seq = self.textResultSequence.get("1.0", "end").strip()
            #             self.optimizer.setOptimizedSeq(seq)

            oldInsert = self.textResultSequence.index("insert")
            self.textResultSequence.delete("1.0", "end")

            targetCodons = self.optimizer.getCodonsForPrint(False)
            if not targetCodons:
                self.textSourceSeq.insert("end", self.optimizer.optimizedSequence)
            else:
                for (co, sc, r) in targetCodons:
                    if sc:
                        if not r:
                            self.textResultSequence.insert("end", co, "normal" + str(int(sc * 100)))
                            # print("normal"+str(int(sc*100)))
                        else:
                            self.textResultSequence.insert("end", co, "restrict" + str(int(sc * 100)))
                    else:
                        # remainder without color
                        self.textResultSequence.insert("end", co)

            self.textSourceSeq.mark_set("insert", oldInsert)

            self.textResultSequence.edit_modified(False)

    def actionLoadSequence(self, event=None):
        filename = tkinter.filedialog.askopenfilename()
        if filename:
            seq = sequenceIO.readFile(filename)
            self.textSourceSeq.delete("1.0", "end")
            self.textSourceSeq.insert("end", seq)
            self.textSourceSeq.edit_modified(True)

    def actionSaveSequence(self, event=None):
        filename = tkinter.filedialog.asksaveasfilename()
        if filename:
            #             print("file is " + filename)
            with open(filename, mode="w") as fd:
                fd.write(self.optimizer.optimizedSequence)
示例#51
0
class Example(Frame):
  
    def __init__(self, parent):
        Frame.__init__(self, parent)   
         
        self.parent = parent
        self.initUI()

        
    def initUI(self):
      
        self.parent.title("EGUANA")
        self.style = ttk.Style()        
        self.style.theme_use("alt")        
        
        self.photoName = "eguana.gif"
        self.frame = Frame(self, relief=FLAT, borderwidth=10,bg='#FADC46')

        self.frame.pack(fill=BOTH, expand=True)        
        self.pack(fill=BOTH, expand=True)
        
        self.setupMenuBar()
        self.setupTopBar()  
        
    def setupMenuBar(self):
        
        self.menubar = EguanaMenu(self.parent,self)
        self.parent.config(menu=self.menubar)

    def setupTopBar(self):
        
        self.openButton3D = Button(self.frame,text="Select Directory for 3D EMA",relief=RAISED,command=self.askDirectory)
        self.openButton3D.grid(row=0,column=0, sticky=N+S+E+W,padx=2,pady =2)
        
        self.openButton2D = Button(self.frame,text="Select Directory for 2D EMA",relief=RAISED,command=self.askDirectory);
        self.openButton2D.grid(row=2,column=2, sticky=N+S+E+W,padx=2,pady =2)

        self.p1Button = Button(self.frame,text="Placeholder",relief=RAISED)
        self.p1Button.grid(row=0,column=1, sticky=N+S+E+W,padx=2,pady =2)
        self.p2Button = Button(self.frame,text="Placeholder",relief=RAISED)
        self.p2Button.grid(row=0,column=2, sticky=N+S+E+W,padx=2,pady =2)
        self.p3Button = Button(self.frame,text="Placeholder",relief=RAISED)
        self.p3Button.grid(row=1,column=0, sticky=N+S+E+W,padx=2,pady =2)
        self.p4Button = Button(self.frame,text="Placeholder",relief=RAISED)
        self.p4Button.grid(row=1,column=2, sticky=N+S+E+W,padx=2,pady =2)
        self.p5Button = Button(self.frame,text="Placeholder",relief=RAISED)
        self.p5Button.grid(row=2,column=0, sticky=N+S+E+W,padx=2,pady =2)
        self.p6Button = Button(self.frame,text="Placeholder",relief=RAISED)
        self.p6Button.grid(row=2,column=1, sticky=N+S+E+W,padx=2,pady =2)

        self.openButton3D.bind('<Motion>',self.cursorPosition)
        self.openButton2D.bind('<Motion>',self.cursorPosition)

        self.photo = PhotoImage(file="eguana.gif")
        self.photo = self.photo.subsample(2);
        self.photo_label = Label(self.frame,image=self.photo,borderwidth=0,highlightthickness=0)
        self.photo_label.configure(bg='#FADC46')
        
        self.photo_label.grid(row=1,column=1, sticky=N+S+E+W,padx=2,pady =2)
        
        self.photo_label.image = self.photo
    
    
        self.frame.columnconfigure(0, weight=1)
        self.frame.columnconfigure(1, weight=1)
        self.frame.columnconfigure(2, weight=1)
        self.frame.rowconfigure(0, weight=1)
        self.frame.rowconfigure(1, weight=1)
        self.frame.rowconfigure(2, weight=1)
        
    def askDirectory(self):

        dirStr = filedialog.askdirectory()
        
        if len(dirStr):
            self.openButton3D.destroy()
            self.openButton2D.destroy()
            self.p1Button.destroy()
            self.p2Button.destroy()
            self.p3Button.destroy()
            self.p4Button.destroy()
            self.p5Button.destroy()
            self.p6Button.destroy()

            self.menubar.entryconfigure('Filter', state = 'active')
            self.photo_label.destroy()

            dirStr = 'Input Path : '+dirStr
            
            
            self.frame.grid_forget()
            
           

            self.infoFrame = Frame(self.frame, relief=FLAT, bg='#FADC46')
            self.infoFrame.grid(row=0,column=0,columnspan=3, sticky=N+S+E+W,padx=2,pady =2)
               
        
            self.directoryLabel = Label(self.infoFrame, text="No project currently selected",relief=FLAT)
            self.directoryLabel.grid(row=0,column=0,columnspan=2, sticky=N+S+E+W,padx=2,pady =2)
            self.directoryLabel.config(text=dirStr)
            
        
            self.outputDirButton = Button(self.infoFrame,text="No output directory selected. Click to select an output directory ",relief=RAISED,fg='red',command=self.askOutputDirectory)
            self.outputDirButton.grid(row=1,column=0,columnspan=2, sticky=N+S+E+W,padx=2,pady =2)
            
            
            self.filterButton = Button(self.infoFrame,text="No filter selected. Click to select a filter",relief=RAISED,fg='red',command=self.selectFilter)
            self.filterButton.grid(row=2,column=0,columnspan=2, sticky=N+S+E+W,padx=2,pady =2)
           
           
            self.trialLabel = Label(self.infoFrame,text="Trial Number",relief=FLAT,justify=RIGHT,anchor=E)
            self.trialLabel.grid(row=3,column=0, sticky=N+S+E+W,padx=2,pady =2)


            vcmd = (self.master.register(self.validate),'%d', '%i', '%P', '%s', '%S', '%v', '%V', '%W')
            self.trialEntry = Entry(self.infoFrame,validate = 'key', validatecommand = vcmd)
            self.trialEntry.grid(row=3,column=1, sticky=N+S+E+W,padx=2,pady =2)

            self.infoFrame.columnconfigure(0, weight=1)
            self.infoFrame.columnconfigure(1, weight=1)
            self.infoFrame.rowconfigure(0, weight=1)
            self.infoFrame.rowconfigure(1, weight=1)
            self.infoFrame.rowconfigure(2, weight=1)
            self.infoFrame.rowconfigure(3, weight=1)

            self.showPlotTools()

    def validate(self, action, index, value_if_allowed,
                       prior_value, text, validation_type, trigger_type, widget_name):
                           
        if len(value_if_allowed)==0 : 
            return True
        
        if text in '0123456789.-+ ':
            try:
                float(value_if_allowed)
                return True
            except ValueError:
                return False
        else:
            return False
            
    def askOutputDirectory(self):
        dirStr = filedialog.askdirectory()
        if len(dirStr):
            dirStr = 'Output Path : '+dirStr
            self.outputDirButton.destroy()
            self.outputDirLabel = Label(self.infoFrame, relief=FLAT)
            self.outputDirLabel.grid(row=1,column=0,columnspan=2, sticky=N+S+E+W,padx=2,pady =2)
            self.outputDirLabel.config(text=dirStr)

            

    def showPlotTools(self):        
        
        f2= Frame(self.frame, relief=FLAT,bg='#FADC46')
        f2.grid(row=1,column=0,rowspan=2,columnspan=3,sticky=N+S+E+W,padx=10,pady =10)
        
        b1 = Button(f2,text='3D K',relief=RAISED,command= lambda:self.plotButtonPressed(1))
        b1.grid(row=0, column=0,sticky=N+S+E+W,padx=5,pady =5)
        
        b2 = Button(f2,text='3D Dist',relief=RAISED,command=lambda:self.plotButtonPressed(2))
        b2.grid(row=0, column=1,sticky=N+S+E+W,padx=5,pady =5)
        
        b3 = Button(f2,text='3D DP',relief=RAISED,command=lambda:self.plotButtonPressed(3))
        b3.grid(row=0, column=2,sticky=N+S+E+W,padx=5,pady =5)
        
        b4 = Button(f2,text='2D K',relief=RAISED,command=lambda:self.plotButtonPressed(4))
        b4.grid(row=1, column=0,sticky=N+S+E+W,padx=5,pady =5)

        b5 = Button(f2,text='2D Dist',relief=RAISED,command=lambda:self.plotButtonPressed(5))
        b5.grid(row=1, column=1,sticky=N+S+E+W,padx=5,pady =5)

        b6 = Button(f2,text='2D DP',relief=RAISED,command=lambda:self.plotButtonPressed(6))
        b6.grid(row=1, column=2,sticky=N+S+E+W,padx=5,pady =5)
        
        f2.columnconfigure(0, weight=1)
        f2.columnconfigure(1, weight=1)
        f2.columnconfigure(2, weight=1)

        f2.rowconfigure(0, weight=1)
        f2.rowconfigure(1, weight=1)
       
       
    def plotButtonPressed(self,number):
        trialNum = self.trialEntry.get()
        
        try:
            trialNum = float(trialNum)
            
            
            if trialNum < 16 and trialNum > 0:
                self.plotFigure(number)
                return True             
            else:
                messagebox.showerror(
                    "Trial Number Error",
                    "The trial number is out of range"
                    )     
                return False
        except ValueError:
            messagebox.showerror(
                "Trial Number Error",
                "Error with the trial number"
            )  
            return False
            
    def plotFigure(self,number):
        m =  CoilNumDialog(self.frame)
        if m.isSet():
            print(m.getValues())
        
    def selectFilter(self):        
        self.top = FilterPopup(self);

    def speech3DButtonPressed(self):
        self.menubar.filterSelected(0)
        self.top.destroy()
        if hasattr(self, 'filterLabel'):
            self.filterLabel.config(text="Filter : speech3D")
        else:
            self.filterLabel = Label(self.infoFrame, text="Filter : speech3D",relief=FLAT)
            self.filterLabel.grid(row=2,column=0,columnspan=2, sticky=N+S+E+W,padx=2,pady =2)
            self.filterButton.destroy()
    
    def speech2DButtonPressed(self):
        self.menubar.filterSelected(1)
        self.top.destroy()
        if hasattr(self, 'filterLabel'):
            self.filterLabel.config(text="Filter : speech2D")
        else:
            self.filterLabel = Label(self.infoFrame, text="Filter : speech2D ",relief=FLAT)
            self.filterLabel.grid(row=2,column=0,columnspan=2, sticky=N+S+E+W,padx=2,pady =2)
            self.filterButton.destroy()
    
    def swallow3DButtonPressed(self):
        self.menubar.filterSelected(2)
        self.top.destroy()
        if hasattr(self, 'filterLabel'):
            self.filterLabel.config(text="Filter : swallow3D")
        else:
            self.filterLabel = Label(self.infoFrame, text="Filter : swallow3D ",relief=FLAT)
            self.filterLabel.grid(row=2,column=0,columnspan=2, sticky=N+S+E+W,padx=2,pady =2)
            self.filterButton.destroy()
    
    def swallow2DButtonPressed(self):
        self.menubar.filterSelected(3)
        self.top.destroy()
        if hasattr(self, 'filterLabel'):
            self.filterLabel.config(text="Filter : swallow2D")
        else:
            self.filterLabel = Label(self.infoFrame, text="Filter : swallow2D ",relief=FLAT)
            self.filterLabel.grid(row=2,column=0,columnspan=2, sticky=N+S+E+W,padx=2,pady =2)
            self.filterButton.destroy()

    def changeImage(self):
        self.photo = PhotoImage(file=self.photoName)
        self.photo = self.photo.subsample(2);
        self.photo_label.image = self.photo  
        self.photo_label.config(image=self.photo)
        
        
        
    def cursorPosition(self,event):       
        if event.widget ==  self.openButton3D:
            if self.photoName == "eguana2.gif":
                self.photoName = "eguana.gif"
                self.changeImage()
                
        elif event.widget ==  self.openButton2D:
            if self.photoName == "eguana.gif":
                self.photoName = "eguana2.gif"
                self.changeImage()
示例#52
0
root = Tk()

panel_frame = Frame(root, height=60, bg='gray')
text_frame = Frame(root, height=360, width=600)

panel_frame.pack(side='top', fill='x')
text_frame.pack(side='bottom', fill='both', expand=1)

textbox = Text(text_frame, font='Arial 14', wrap='word')
scrollbar = Scrollbar(text_frame)

scrollbar['command'] = textbox.yview
textbox['yscrollcommand'] = scrollbar.set

textbox.pack(side='left', fill='both', expand=1)
scrollbar.pack(sid='right', fill='y')

load_btn = Button(panel_frame, text='Load')
save_btn = Button(panel_frame, text='Save')
quit_btn = Button(panel_frame, text='Quit')

load_btn.bind('<Button-1>', load_file)
save_btn.bind('<Button-1>', save_file)
quit_btn.bind('<Button-1>', quit)

load_btn.place(x=10, y=10, width=40, height=40)
save_btn.place(x=60, y=10, width=40, height=40)
quit_btn.place(x=110, y=10, width=40, height=40)

root.mainloop()
class SpeciesListDialog:
    def __init__(self, parent):
        self.parent = parent
        self.gui = Toplevel(parent.guiRoot)
        self.gui.grab_set()
        self.gui.focus()

        self.gui.columnconfigure(0, weight=1)
        self.gui.rowconfigure(1, weight=1)

        Label(self.gui, text="Registered Species:").grid(row=0, column=0, pady=5, padx=5, sticky="w")
        self.listRegisteredSpecies = Listbox(self.gui, width=70)
        self.buttonAdd = Button(self.gui, text=" + ")
        self.buttonDel = Button(self.gui, text=" - ")
        self.listRegisteredSpecies.grid(row=1, column=0, columnspan=3, sticky="nswe", pady=5, padx=5)
        self.buttonAdd.grid(row=2, column=1, pady=5, padx=5)
        self.buttonDel.grid(row=2, column=2, pady=5, padx=5)

        # Set (minimum + max) Window size
        self.gui.update()
        self.gui.minsize(self.gui.winfo_width(), self.gui.winfo_height())
        #         self.gui.maxsize(self.gui.winfo_width(), self.gui.winfo_height())

        self.actionUpdate(None)
        self.gui.bind("<<Update>>", self.actionUpdate)
        self.gui.protocol("WM_DELETE_WINDOW", self.actionClose)

        self.buttonDel.bind("<ButtonRelease>", self.actionDel)
        self.buttonAdd.bind("<ButtonRelease>", self.actionAdd)

        self.gui.mainloop()

    def actionClose(self):
        self.parent.guiRoot.event_generate("<<Update>>", when="tail")
        self.gui.destroy()

    def actionUpdate(self, event):
        self.listRegisteredSpecies.delete(0, "end")
        for (taxid, name) in self.parent.optimizer.speciesList:
            self.listRegisteredSpecies.insert("end", taxid + ": " + name)

    def actionDel(self, event):
        try:
            selection = self.listRegisteredSpecies.selection_get()
            selectionSplit = selection.split(": ")
            self.parent.optimizer.speciesList.remove((selectionSplit[0], selectionSplit[1]))
            self.gui.event_generate("<<Update>>")
        except tkinter.TclError:
            # no selection
            pass

    def actionAdd(self, Event):
        SpeciesSearchDialog(self.parent, self)
示例#54
-5
文件: tk.py 项目: tifv/jtimer
class TkTimerCore(TimerCore):
    def __init__(self, *args, title, font_size, **kwargs):
        def close_handler(event):
            self.close()
        def clicked_handler(event):
            self.interact()

        self.master = Tk()
        self.master.wm_title(title)
        self.master.bind('<Destroy>', close_handler)
        self.label = Label(self.master, font='Sans {}'.format(int(font_size)))
        self.label.pack(expand=True)

        self.control = Toplevel()
        self.control.wm_title(title + ' (control)')
        self.control.minsize(150, 150)
        self.control.bind('<Destroy>', close_handler)
        self.button = Button(self.control, text='Start/Pause')
        self.button.bind('<ButtonRelease>', clicked_handler)
        self.button.pack(expand=True)

        self.timeout_running = False

        super().__init__(*args, **kwargs)

    def start_timeout(self):
        assert self.timeout_running is False
        def timeout_call():
            if self.timeout_running:
                self.update()
                self.master.after(25, timeout_call)
        self.timeout_running = True
        timeout_call()

    def stop_timeout(self):
        assert self.timeout_running is True
        self.timeout_running = False

    def mainloop(self):
        return self.master.mainloop()

    def shutdown(self):
        self.master.quit()

    def set_label_text(self, text, finished=False):
        self.label.config(text=text)
        if finished:
            self.label.config(fg='red')