Esempio n. 1
0
def splashscreen():
    #show splashscreen
    splashwindow = Window(app, "Erelas monitoring system", width=450, height = 100)
    splashtext = Text(splashwindow, text="Device status monitored by Erelas monitoring system")
    splashtext2 = Text(splashwindow, text = "https://github.com/moth754/Erelas-Local-Monitor")
    splashwindow.show()
    sleep(3)
    splashwindow.hide()
Esempio n. 2
0
def question3():
    global sb, txt, qth
    qth = Window(app, title="Question Three", width=800, height=400)
    qth.show()
    print("start question 3")
    txt = Text(qth, text="Hold the screen out in front of you")
    txt.text_size = 40
    txt.text_color = 'magenta'

    sb = PushButton(qth, text="Begin", padx=240, pady=80, command=balancetest)
    sb.bg = 'green'
    sb.text_size = 100
class NewTask():
    '''NewTask GUI'''
    def __init__(self, app, callback):
        '''Class contructor'''
        self.callback = callback
        self.window_new = Window(app, title="Add Task")
        Text(self.window_new, "Add new task title")
        self.title = TextBox(self.window_new,
                             command=self.check_empty,
                             width="fill")
        Text(self.window_new, "Add new task description")
        self.desc_box = Box(self.window_new,
                            align="top",
                            width="fill",
                            height="fill",
                            border=True)
        self.btn_box = Box(self.window_new,
                           align="bottom",
                           width="fill",
                           border=True)
        self.description = TextBox(self.desc_box,
                                   command=self.check_empty,
                                   width="fill",
                                   height="fill",
                                   multiline=True,
                                   scrollbar=True)
        PushButton(self.btn_box,
                   command=self.window_new.destroy,
                   align="left",
                   width="fill",
                   text="Cancel")
        self.add_btn = PushButton(self.btn_box,
                                  enabled=False,
                                  align="left",
                                  width="fill",
                                  command=self.add_task,
                                  text="Add")
        self.window_new.tk.resizable(True, False)
        self.window_new.show()

    def check_empty(self):
        '''disable add button if title and description are empty'''
        if self.title.value != "" and self.description.value != "\n":
            self.add_btn.enable()
        else:
            self.add_btn.disable()

    def add_task(self):
        '''callback with new title and description'''
        self.callback(self.title.value, self.description.value)
        self.window_new.destroy()
Esempio n. 4
0
    def copy():
        copy_window = Window(json_editor_window, title="create a copy")
        copy_window.show(wait=True)
        Text(copy_window, text="Name of copy :")
        file_name = TextBox(copy_window,
                            text=file_display.value,
                            enabled=True,
                            width="fill")
        file_name.when_left_button_released = text_click

        def complete_copy():
            destination = file_name.value
            save(0, destination)
            copy_window.destroy()

        ok_button = PushButton(copy_window, text="OK", command=complete_copy)
        cancel_button = PushButton(copy_window,
                                   text="cancel",
                                   command=copy_window.destroy)
Esempio n. 5
0
def findTweets():
    user = textBox.value
    app.hide()

    # Loading Window Appears
    loadingWindow = Window(app, title="Loading Tweets", visible=True)
    loadingText = Text(loadingWindow, text="Loading Tweets... This may take up to 30 seconds")
    loadingWindow.update()

    # Checking to make sure everything is working on console
    print(user)
    myuser = api.get_user(screen_name=user)
    print(user, " has ", myuser.statuses_count, " total tweets")

    # Doing our first search so we can get our maxid to search from on the rest
    print("First Search...")
    for tweet in tw.Cursor(api.user_timeline, screen_name=user).items(200):
        tweets.append(tweet)

    for tweet in tweets:
        maxtweetid = tweet.id

    # Doing the rest of our searches resetting the maxid everytime.
    print("Rest of searches...")
    for x in range(0, 30):
        print(x, end=" ", flush=True)
        newtweets = tw.Cursor(api.user_timeline,
                              screen_name=user,
                              max_id=maxtweetid,
                              count=0).items(100)
        for tweet in newtweets:
            maxtweetid = tweet.id
            tweets.append(tweet)
    tracker = 0

    # Close our loading window
    loadingWindow.hide()

    tweetsWindow = Window(app, title="Tweets for @" + user)
    # Setting up our date stuff to print on window Format of datetime: YYYY-MM-DD
    createDate = str(myuser.created_at)
    createDate = createDate[:4]
    todayMonth = datetime.datetime.now()
    todayMonth = todayMonth.strftime("%B")
    todayDay = str(datetime.date.today())
    todayDay = todayDay[8:10]
    todayYear = str(datetime.date.today())
    todayYear = todayYear[0:4]

    text1 = Text(tweetsWindow, text="Tweet(s) from @" + user + " on " + todayMonth + " " + todayDay + " between " +
                                    createDate + "-" + todayYear)
    tweetsWindow.hide()

    myDate = str(datetime.date.today())
    newDate = myDate[4:]

    # Setting our text in our tweet window
    for tweet in tweets:
        if newDate in tweet.created_at.strftime("%Y-%m-%d %H:%M:%S"):
            tracker = tracker + 1
            text = Text(tweetsWindow,
                        text="Tweet " + str(tracker) + ": \"" + tweet.text + "\"\n" + str(tweet.created_at) + "\n")
            # print("Tweet: ", tracker)
            # print("\"" + tweet.text + "\"")
            # print(tweet.created_at)
    # Display our tweets and program is concluded
    exitprogrambutton = PushButton(tweetsWindow, exitprogram, text="Exit")
    tweetsWindow.show()
Esempio n. 6
0
class Gui(object):
    def __init__(self):
        self.smidgen_number = 0
        self.pinch_number = 0
        self.dash_number = 0
        self.teaspoon_number = 0
        self.dispensing_id = Spices.SALT  # Default: id is salt (0)
        self.dispensing_id_text = SALT_DISPENSING_TEXT  # Default: salt
        self.dispensing_amount = 0
        self.dispensing_flag = False

        self.app = App(title="Pestle Co.")
        # All code must be added in th event loop
        # START
        self.option_window = Window(self.app, title="Choosing a spice")
        self.option_window.hide()  # hide this window for now
        self.dispensing_window = Window(self.option_window, title="Dispensing")
        self.dispensing_window.hide()  # hide this window for now
        self.app.set_full_screen()
        self.welcome_message = Text(self.app, text="Pestle Co.", size=40, font="Times New Roman", color="blue")
        self.start_button = PushButton(self.app, command=self.open_option_window, text="Push to Start")

        # Option page
        self.salt_button = PushButton(self.option_window, command=self.open_salt_dispensing_window, text="Salt",
                                      align="top")
        self.pepper_button = PushButton(self.option_window, command=self.open_pepper_dispensing_window, text="Pepper",
                                        align="top")
        self.done_button = PushButton(self.option_window, command=self.close_option_window, text="Done", align="bottom")

        # Dispensing page
        self.dispensing_text = Text(self.dispensing_window, text=self.dispensing_id_text)
        self.smidgen_button = PushButton(self.dispensing_window, command=self.add_a_smidgen, text="Smidgen")
        self.smidgen_number_text = Text(self.dispensing_window, text=str(self.smidgen_number) + " Smidgen(s)")
        self.pinch_button = PushButton(self.dispensing_window, command=self.add_a_pinch, text="Pinch")
        self.pinch_number_text = Text(self.dispensing_window, text=str(self.pinch_number) + " Pinch(es)")
        self.dash_button = PushButton(self.dispensing_window, command=self.add_a_dash, text="Dash")
        self.dash_number_text = Text(self.dispensing_window, text=str(self.dash_number) + " Dash(es)")
        self.teaspoon_button = PushButton(self.dispensing_window, command=self.add_a_teaspoon, text="Teaspoon")
        self.teaspoon_number_text = Text(self.dispensing_window, text=str(self.teaspoon_number) + " Teaspoon(s)")
        self.dispense_button = PushButton(self.dispensing_window, command=self.final_dispense, text="Dispense",
                                          align="bottom")
        self.reset_button = PushButton(self.dispensing_window, command=self.reset_measurement, text="Reset",
                                       align="bottom")
        # STOP
        self.app.display()

        # Helper functions: windows
    def open_option_window(self):
        self.option_window.show(wait=True)
        self.option_window.set_full_screen()

    def close_option_window(self):
        self.option_window.exit_full_screen()
        self.option_window.hide()
        self.app.display()

    def open_dispensing_window(self):
        self.dispensing_window.show(wait=True)
        self.dispensing_window.set_full_screen()

    def close_dispensing_window(self):
        self.dispensing_window.exit_full_screen()
        self.dispensing_window.hide()
        self.open_option_window()

    def open_salt_dispensing_window(self):
        self.dispensing_id_text = SALT_DISPENSING_TEXT
        self.dispensing_text.set(self.dispensing_id_text)
        self.open_dispensing_window()

    def open_pepper_dispensing_window(self):
        self.dispensing_id_text = PEPPER_DISPENSING_TEXT
        self.dispensing_text.set(self.dispensing_id_text)
        self.open_dispensing_window()

    # Helper functions: dispensing
    def add_a_smidgen(self):
        self.smidgen_number += 1
        self.smidgen_number_text.set(str(self.smidgen_number) + " Smidgen(s)")
        self.dispensing_amount += GRAMS_SALT_PER_TEASPOON/SMIDGENS_PER_TEASPOON if self.dispensing_id == Spices.SALT \
            else GRAMS_PEPPER_PER_TEASPOON/SMIDGENS_PER_TEASPOON

    def add_a_pinch(self):
        self.pinch_number += 1
        self.pinch_number_text.set(str(self.pinch_number) + " Pinch(es)")
        self.dispensing_amount += GRAMS_SALT_PER_TEASPOON/PINCHES_PER_TEASPOON if self.dispensing_id == Spices.SALT \
            else GRAMS_PEPPER_PER_TEASPOON/PINCHES_PER_TEASPOON

    def add_a_dash(self):
        self.dash_number += 1
        self.dash_number_text.set(str(self.dash_number) + " Dash(es)")
        self.dispensing_amount += GRAMS_SALT_PER_TEASPOON/DASHES_PER_TEASPOON if self.dispensing_id == Spices.SALT \
            else GRAMS_PEPPER_PER_TEASPOON/DASHES_PER_TEASPOON

    def add_a_teaspoon(self):
        self.teaspoon_number += 1
        self.teaspoon_number_text.set(str(self.teaspoon_number) + " Teaspoon(es)")
        self.dispensing_amount += GRAMS_SALT_PER_TEASPOON if self.dispensing_id == Spices.SALT \
            else GRAMS_PEPPER_PER_TEASPOON

    def final_dispense(self):
        self.dispensing_flag = True
        self.close_dispensing_window()  # Return to the dispensing window
        self.open_option_window()  # Return to the option window

    def ready_to_dispense(self):
        return self.dispensing_flag

    def get_slot_id(self):
        return self.dispensing_id

    def get_amount_in_grams(self):
        return self.dispensing_amount

    def reset_measurement(self):
        self.smidgen_number = 0
        self.smidgen_number_text.set(str(self.smidgen_number) + " Smidgen(s)")
        self.pinch_number = 0
        self.pinch_number_text.set(str(self.pinch_number) + " Pinch(es)")
        self.dash_number = 0
        self.dash_number_text.set(str(self.dash_number) + " Dash(es)")
        self.teaspoon_number = 0
        self.teaspoon_number_text.set(str(self.teaspoon_number) + " Teaspoon(es)")
Esempio n. 7
0
def generate():
    textApp = Window(app, title="Ticket")
    nameHeader = Text(textApp, text="Name:")
    name = Text(textApp, text=my_name.value)
    textApp.show()
Esempio n. 8
0
               text="Made by The Cool Guy 468 and Kidplayer_666",
               size=8)
"""Score stuff"""

scoremenu = Window(app)
Scoretext = Text(scoremenu, text="your score is")
Actualscore = Text(scoremenu, text="0")
restbutton2 = PushButton(scoremenu, text="Reset", command=resetthething)
menubutton = PushButton(scoremenu, text="Menu", command=menubuttonthing)
# Waffle setup here for experimental purposes, aka, level size testing
waffle = Waffle(app,
                pad=0,
                grid=[1, 1],
                height=20,
                width=20,
                color="green",
                command=protec,
                dim=25)
"""Pixel shuffler"""
pixels = []
for x in range(waffle.width):
    for y in range(waffle.height):
        pixels.append(waffle.pixel(x, y))
shuffle(pixels)
"""just starting the app"""
app.repeat(750, propagate)
startmenu.show()
scoremenu.hide()
app.hide()
app.display()
Esempio n. 9
0
class piDSLM:
    def __init__(self):
        self.capture_number = self.timestamp()
        self.video_capture_number = self.timestamp()
        self.picture_index = 0
        self.saved_pictures = []
        self.shown_picture = ""

        GPIO.setwarnings(False)  # Ignore warning for now
        GPIO.setmode(GPIO.BCM)  # set up BCM GPIO numbering
        GPIO.setup(16, GPIO.IN, pull_up_down=GPIO.PUD_UP)
        GPIO.add_event_detect(16,
                              GPIO.FALLING,
                              callback=self.takePicture,
                              bouncetime=2500)

        self.app = App(layout="grid",
                       title="Camera Controls",
                       bg="black",
                       width=480,
                       height=320)

        text0 = Text(self.app, color="white", grid=[1, 0], text="- PiDSLM -")

        button1 = PushButton(self.app,
                             grid=[1, 1],
                             width=110,
                             height=110,
                             pady=35,
                             padx=10,
                             image="/home/pi/piDSLM/icon/prev.png",
                             command=self.long_preview)
        text1 = Text(self.app, color="white", grid=[1, 2], text="Focus")

        button2 = PushButton(self.app,
                             grid=[3, 1],
                             width=110,
                             height=110,
                             pady=35,
                             padx=10,
                             image="/home/pi/piDSLM/icon/gallery.png",
                             command=self.show_gallery)
        text2 = Text(self.app, color="white", grid=[3, 2], text="Gallery")

        button3 = PushButton(self.app,
                             grid=[5, 1],
                             width=110,
                             height=110,
                             pady=35,
                             padx=10,
                             image="/home/pi/piDSLM/icon/vid.png",
                             command=self.video_capture)
        text2 = Text(self.app, color="white", grid=[5, 2], text="HD 30s")

        button4 = PushButton(self.app,
                             grid=[7, 1],
                             width=110,
                             height=110,
                             pady=35,
                             padx=10,
                             image="/home/pi/piDSLM/icon/lapse.png",
                             command=self.burst)
        text3 = Text(self.app, color="white", grid=[7, 2], text="Burst")

        button5 = PushButton(self.app,
                             grid=[1, 3],
                             width=110,
                             height=110,
                             image="/home/pi/piDSLM/icon/self.png",
                             command=self.lapse)
        text4 = Text(self.app, color="white", grid=[1, 4], text="1h 60pix")

        button6 = PushButton(self.app,
                             grid=[3, 3],
                             width=110,
                             height=110,
                             image="/home/pi/piDSLM/icon/long.png",
                             command=self.split_hd_30m)
        text2 = Text(self.app, color="white", grid=[3, 4], text="HD 30m in 5s")

        button7 = PushButton(self.app,
                             grid=[5, 3],
                             width=110,
                             height=110,
                             image="/home/pi/piDSLM/icon/drop.png",
                             command=self.upload)
        text3 = Text(self.app, color="white", grid=[5, 4], text="Upload")

        button8 = PushButton(self.app,
                             grid=[7, 3],
                             width=110,
                             height=110,
                             image="/home/pi/piDSLM/icon/del.png",
                             command=self.clear)
        text4 = Text(self.app, color="white", grid=[7, 4], text="Clear Folder")

        self.busy = Window(self.app,
                           bg="red",
                           height=175,
                           width=480,
                           title="busy")

        self.app.tk.attributes("-fullscreen", True)
        self.busy.hide()
        self.app.display()

    def clear(self):
        self.show_busy()
        os.system("rm -v /home/pi/Downloads/*")
        self.hide_busy()

    def show_busy(self):
        self.busy.show()
        print("busy now")

    def hide_busy(self):
        self.busy.hide()
        print("no longer busy")

    def fullscreen(self):
        self.app.tk.attributes("-fullscreen", True)

    def notfullscreen(self):
        self.app.tk.attributes("-fullscreen", False)

    # Generate timestamp string generating name for photos
    def timestamp(self):
        tstring = datetime.datetime.now()
        #print("Filename generated ...")
        return tstring.strftime("%Y%m%d_%H%M%S")

    def burst(self):
        self.show_busy()
        capture_number = self.timestamp()
        print("Raspistill starts")
        os.system(
            "raspistill -t 10000 -tl 0 --thumb none -n -bm -o /home/pi/Downloads/BR"
            + str(capture_number) + "%04d.jpg")
        print("Raspistill done")
        self.hide_busy()

    def split_hd_30m(self):
        self.show_busy()
        capture_number = self.timestamp()
        print("Raspivid starts")
        os.system("raspivid -f -t 1800000 -sg 300000  -o /home/pi/Downloads/" +
                  str(capture_number) + "vid%04d.h264")
        print("done")
        self.hide_busy()

    def lapse(self):
        self.show_busy()
        capture_number = self.timestamp()
        print("Raspistill timelapse starts")
        os.system(
            "raspistill -t 3600000 -tl 60000 --thumb none -n -bm -o /home/pi/Downloads/TL"
            + str(capture_number) + "%04d.jpg")
        print("Raspistill timelapse done")
        self.hide_busy()

    def long_preview(self):
        self.show_busy()
        print("15 second preview")
        os.system("raspistill -f -t 15000")
        self.hide_busy()

    def capture_image(self):
        self.show_busy()
        capture_number = self.timestamp()
        print("Raspistill starts")
        os.system("raspistill -f -o /home/pi/Downloads/" +
                  str(capture_number) + "cam.jpg")
        print("Raspistill done")
        self.hide_busy()

    def takePicture(self, channel):
        print("Button event callback")
        capture_number = self.timestamp()
        print("Raspistill starts")
        os.system("raspistill -f -t 3500 -o /home/pi/Downloads/" +
                  str(capture_number) + "cam.jpg")
        print("Raspistill done")

    def picture_left(self):
        if (self.picture_index == 0):
            self.pictures = (len(self.saved_pictures) - 1)
        self.picture_index -= 1
        self.shown_picture = self.saved_pictures[self.picture_index]
        self.picture_gallery = Picture(self.gallery,
                                       width=360,
                                       height=270,
                                       image=self.shown_picture,
                                       grid=[1, 0])

    def picture_right(self):
        if (self.picture_index == (len(self.saved_pictures) - 1)):
            self.picture_index = 0
        self.picture_index += 1
        self.shown_picture = self.saved_pictures[self.picture_index]
        self.picture_gallery = Picture(self.gallery,
                                       width=360,
                                       height=270,
                                       image=self.shown_picture,
                                       grid=[1, 0])

    def show_gallery(self):
        self.gallery = Window(self.app,
                              bg="white",
                              height=300,
                              width=460,
                              layout="grid",
                              title="Gallery")
        self.saved_pictures = glob.glob('/home/pi/Downloads/*.jpg')
        self.shown_picture = self.saved_pictures[self.picture_index]
        button_left = PushButton(self.gallery,
                                 grid=[0, 0],
                                 width=40,
                                 height=50,
                                 pady=50,
                                 padx=10,
                                 image="/home/pi/piDSLM/icon/left.png",
                                 command=self.picture_left)
        self.picture_gallery = Picture(self.gallery,
                                       width=360,
                                       height=270,
                                       image=self.shown_picture,
                                       grid=[1, 0])
        button_right = PushButton(self.gallery,
                                  grid=[2, 0],
                                  width=40,
                                  height=50,
                                  pady=50,
                                  padx=10,
                                  image="/home/pi/piDSLM/icon/right.png",
                                  command=self.picture_right)
        self.gallery.show()

    def video_capture(self):
        self.show_busy()
        capture_number = self.timestamp()
        print("Raspivid starts")
        os.system("raspivid -f -t 30000 -o /home/pi/Downloads/" +
                  str(capture_number) + "vid.h264")
        print("done")
        self.hide_busy()

    def upload(self):
        self.show_busy()
        subprocess.Popen(
            ["python3", "/home/pi/piDSLM/dropbox_upload.py", "--yes"])
        self.hide_busy()
Esempio n. 10
0

app = App(title="Coffee Roaster",
          width=480,
          height=320,
          layout="grid",
          bg="white")
#Start Screen
startwdw = Window(app,
                  title="Coffee Roaster",
                  width=480,
                  height=320,
                  layout="grid",
                  bg="white")
startwdw.tk.attributes("-fullscreen", True)
startwdw.show(wait=True)  #welcome window
space = Text(startwdw, text="", grid=[0, 0], size=5)
welcome_message = Text(startwdw,
                       text=" Coffee Roaster 2.0 ",
                       grid=[0, 2],
                       align="left",
                       size=40,
                       font="Helvetica",
                       color="sienna4")
space = Text(startwdw, text="", grid=[0, 3], size=10, align="bottom")
startbt = PushButton(startwdw,
                     text="START",
                     command=start_program,
                     grid=[0, 4],
                     image="giantbean.gif")
startbt.bg = "black"
Esempio n. 11
0
class ProgCalc:
    def __init__(self, input_excel_db):
        self.min_size = 32
        self.no_bits = 8
        self.value = 0
        self.bit_map = {}
        self.bit_descr = {}
        self.endianess = "big"

        self.app = App(layout="grid", height=350, width=550)
        self.top_box = Box(self.app, layout = "grid", grid = [0, 0])
        self.bottom_box = Box(self.app, layout = "grid", grid = [0, 1])
        self.right_box = Box(self.app, grid = [1, 0, 1, 2])

        self.window = Window(self.app, width=250, height=150, visible=False)
        self.description = Text(self.window)

        # Create the text field to enter data
        self.input = TextBox(self.top_box, width=25, grid=[0,0,3,1], command=self.process_input)
        self.input.bg = "white"
        self.input.text_size = 16

        # Display the hex value
        self.out_hex = Text(self.top_box, grid=[2,1], text="0x<waiting for valid input>")
        # Display the min number of bits selector
        self.in_minsize = Combo(self.top_box, grid=[0, 1], options=["32"], command=self.process_minsize, selected="32")
        # Endianess selector
        self.in_endianess = Combo(self.top_box, grid=[1, 1], options=["little", "big"], command=self.process_endianess,
                                  selected=self.endianess)

        # Display the binary value
        self.out_bin = Text(self.top_box, grid=[0, 2, 2, 1], size=17, text="0b<waiting for valid input>")
        # Display little number after the binary value
        self.out_num = Text(self.top_box, grid=[0, 3, 2, 1], size=7, text="")


        # Prepare the waffle list
        self.waffle_list = []
        self.box_list = []
        self.text_list = []

        self.append_wb(4)
        self.append_tx(self.no_bits)

        # Read the worksheets in the input dictionary and create the list
        self.in_excel = openpyxl.load_workbook(filename = input_excel_db, read_only=True)
        self.in_regs = self.in_excel.sheetnames
        self.in_regs.insert(0, "OFF")

        # Display the list of registers
        self.in_reglist = ListBox(self.right_box, items = self.in_regs, command=self.process_reglist)

        self.input.focus()
        self.app.display()

    def append_wb(self, number):
        last_waffle = len(self.waffle_list)
        for i in range(0, 2* number, 2):
            w = Waffle(self.bottom_box, height=self.no_bits, width=1, grid=[last_waffle + i, 0])
            w.hide()
            w.when_clicked = self.process_waffle
            self.waffle_list.append(w)

            b = Box(self.bottom_box, grid=[i + 1, 0])
            b.hide()
            self.box_list.append(b)

    def append_tx(self, number):
        for i in range(0, len(self.box_list)):
            try:
                tmp = self.text_list[i]
            except:
                tmp = []

            for j in range(0, self.no_bits):
                tx = Text(self.box_list[i])
                tx.hide()
                tx.size = 14 # perfect size for all variants
                tx.when_mouse_enters = self.show_description
                tx.when_mouse_leaves = self.hide_description
                tmp.append(tx)
            self.text_list.append(tmp)

    def show_description(self, event_data):
        name = event_data.widget.value
        for elem in self.bit_map:
            if self.bit_map[elem] == name:
                self.description.value = self.bit_descr[elem]
                break
        self.window.show()

    def hide_description(self, event_data):
        self.window.hide()

    def process_input(self, inp):
        try:
            self.value = int(self.input.value, 0)
            self.refresh_all()
        except ValueError:
            return

    def process_endianess(self, inp):
        self.endianess = inp
        self.refresh_all()

    def process_minsize(self, opt):
        self.min_size = int(opt)
        self.refresh_all()

    def process_waffle(self, event_data):
        # Not sure if this is the best way, but it works
        waffleno = int(event_data.y / (event_data.widget.pixel_size + event_data.widget.pad))
        waffleno = event_data.widget.height - (waffleno + 1)

        # Get WafflePixel based on calculation above - reversed to take into account multiple waffles
        idx = 0
        for w in reversed(self.waffle_list):
            # Skip over invisible waffles
            if w.visible == False:
                continue
            if event_data.widget == w:
                break
            idx += 1

        # See what bit needs to be changed
        bit = self.no_bits * idx + waffleno
        if self.value & (1 << bit):
            self.value &= ~(1 << bit)
        else:
            self.value |= (1 << bit)

        # Refresh display
        self.refresh_all()

    def process_reglist(self, selected):
        if selected == "OFF":
            for b in self.box_list:
                b.hide()
            self.bit_map = {}
            self.refresh_all()
            return

        tmp = self.in_excel[selected]
        self.bit_map = {}
        for row in tmp.iter_rows():
            try:
                bits = row[0].value
                if bits == None:
                    break
            except IndexError:
                break
            name = row[1].value
            descr = row[2].value

            try:
                bit = int(bits)
                self.bit_map[bit] = name
                self.bit_descr[bit] = descr
            except ValueError:
                if bits == "Bits":
                    continue
                else:
                    bits = str.replace(bits, "–", "-")
                    interval = bits.split("-")
                    for i in range(int(interval[0]), int(interval[1]) + 1):
                        self.bit_map[i] = name
                        self.bit_descr[i] = descr
        self.refresh_all()

    def refresh_all(self):
        if "0x" in self.input.value:
            self.input.value = hex(self.value)
        else:
            self.input.value = str(self.value)

        # TODO: improve?
        self.display_hex()
        self.display_bin()
        self.display_waffle()

    def display_hex(self):
        self.out_hex.value = hex(self.value)

    def display_bin(self):
        # Get binary without 0b
        outstring = bin(self.value)[2:]
        n = len(outstring)

        # Add zeros at beginning if needed
        while n % self.min_size != 0:
            outstring = "0" + outstring
            n += 1

        # Split in groups of no_bits
        tmp = ""
        for idx in range(0, len(outstring)):
            tmp += outstring[idx]
            if (idx + 1) % self.no_bits == 0:
                tmp += " "
        outstring = tmp[:-1]

        # Handles endianess
        if self.endianess == "little":
            tmp = ""
            for elem in reversed(outstring.split(" ")):
                tmp += elem + " "
            outstring = tmp

        self.out_num.value = "0" + (" " * 140) + "31"
        self.out_bin.value = outstring

    def display_waffle(self):
        # Display new ones, based on the binary representation of the number
        idx = 0
        x_coord = 0

        # Dinamically add waffles if needed
        no_waffles = len(self.out_bin.value.split(" "))
        if no_waffles > len(self.waffle_list):
            self.append_wb(no_waffles - len(self.waffle_list))

        for elem in self.out_bin.value.split(" "):
            # Somehow it gets a empty element, fix this
            if elem == "":
                break

            # Get the waffle
            w = self.waffle_list[x_coord]
            w.show() # Display it
            if len(self.bit_map) != 0:
                b = self.box_list[x_coord]
                b.show()
                txlist = self.text_list[x_coord]
            # Set the individual pixel
            for i in range(0, len(elem)):
                if len(self.bit_map) != 0:
                    txlist[i].show()
                    txlist[i].value = str(idx) + ": " + self.bit_map[idx] + " " * 5
                    idx += 1
                wp = w.pixel(0, i)
                if elem[i] == "1":
                    wp.color = "blue"
                else:
                    wp.color = "white"

            x_coord += 1

        for i in range(x_coord, len(self.waffle_list)):
            self.waffle_list[i].hide()
            self.box_list[i].hide()
Esempio n. 12
0
def questiontwo():
    global timelimit
    qt = Window(app,
                layout="grid",
                title="Question Two",
                width=800,
                height=400)
    qt.show()
    print("start question 2")

    f1 = Box(qt, width=100, height=400, grid=[0, 1])
    f1.border = 1
    f1.bg = "black"

    f2 = Box(qt, width=100, height=400, grid=[1, 1])
    f2.border = 1
    f2.bg = "black"

    f3 = Box(qt, width=100, height=400, grid=[3, 1])
    f3.border = 1
    f3.bg = "black"

    f4 = Box(qt, width=100, height=400, grid=[4, 1])
    f4.border = 1
    f4.bg = "black"

    f5 = Box(qt, width=100, height=400, grid=[5, 1])
    f5.border = 1
    f5.bg = "black"

    f6 = Box(qt, width=100, height=400, grid=[6, 1])
    f6.border = 1
    f6.bg = "black"

    f7 = Box(qt, width=100, height=400, grid=[7, 1])
    f7.border = 1
    f7.bg = "black"

    f8 = Box(qt, width=100, height=400, grid=[8, 1])
    f8.border = 1
    f8.bg = "black"

    bl = [f1, f3, f5, f7]
    x = 0
    for i in range(1, randint(1, 4)):
        bl[i - 1].bg = "yellow"
        x = i
    print(x)

    qt.update()
    sleep(7.35478205493597)

    f1.visible = False
    f2.visible = False
    f3.visible = False
    f4.visible = False
    f5.visible = False
    f6.visible = False
    f7.visible = False
    f8.visible = False

    bo2 = Box(qt, width=800, height=80, grid=[0, 1], layout="grid")
    bo2.border = 1

    b2pp = Box(qt, width=790, height=100, layout="grid", grid=[0, 2])
    b2pp.border = 1

    questiotwo = Text(qt,
                      text="How many yellow lines were there?",
                      grid=[0, 0])
    questiotwo.text_size = 38

    answer1 = PushButton(b2pp,
                         grid=[0, 2],
                         command=checknumber,
                         height=2,
                         width=9,
                         text="One")
    answer1.text_size = 21
    answer1.bg = 'red'
    answer1.update_command(checknumber, args=['1', x])

    answer2 = PushButton(b2pp,
                         grid=[1, 2],
                         command=checknumber,
                         height=2,
                         width=9,
                         text="Two")
    answer2.text_size = 21
    answer2.bg = 'orange'
    answer2.update_command(checknumber, args=['2', x])

    answer3 = PushButton(b2pp,
                         grid=[2, 2],
                         command=checknumber,
                         height=2,
                         width=9,
                         text="Three")
    answer3.text_size = 21
    answer3.bg = 'yellow'
    answer3.update_command(checknumber, args=['3', x])

    answer4 = PushButton(b2pp,
                         grid=[3, 2],
                         command=checknumber,
                         height=2,
                         width=9,
                         text="Four")
    answer4.text_size = 21
    answer4.bg = 'green'
    answer4.update_command(checknumber, args=['4', x])

    answer5 = PushButton(b2pp,
                         grid=[0, 3],
                         command=checknumber,
                         height=2,
                         width=9,
                         text="Five")
    answer5.text_size = 21
    answer5.bg = 'brown'
    answer5.update_command(checknumber, args=['5', x])

    answer6 = PushButton(b2pp,
                         grid=[1, 3],
                         command=checknumber,
                         height=2,
                         width=9,
                         text="Six")
    answer6.text_size = 21
    answer6.bg = 'grey'
    answer6.update_command(checknumber, args=['6', x])

    answer7 = PushButton(b2pp,
                         grid=[2, 3],
                         command=checknumber,
                         height=2,
                         width=9,
                         text="Zero")
    answer7.text_size = 21
    answer7.bg = 'purple'
    answer7.update_command(checknumber, args=['0', x])

    answer8 = PushButton(b2pp,
                         grid=[3, 3],
                         command=checknumber,
                         height=2,
                         width=9,
                         text="Dunno")
    answer8.text_size = 21
    answer8.bg = 'blue'
    answer8.update_command(checknumber, args=['7', x])

    timelimit = time()
Esempio n. 13
0
 #   print('Running without sound')
# <<<<<<<<< RUN >>>>>>>>> #

atexit.register(exit_function)
print('Starting Function')

eqOn.when_clicked = change_earthquake_text
eqOff.when_clicked = change_earthquake_text
ctrOn.when_clicked = change_control_text
ctrOff.when_clicked = change_control_text

# feedback is handled using pickle
try:
    with open('feedback.pkl','rb') as f:
        feedback = pickle.load(f)
        feedback.append([0,0])
except FileNotFoundError:
    feedback = [[0,0]]

with open('feedback.pkl','wb') as f:
    pickle.dump(feedback,f)

countFeedback()
adminWindow.show()

control_app.display()  # show the app
stream.stop_stream()
p.terminate()
print('now at bottom of program')
# time.sleep(60);
Esempio n. 14
0
class Gui(object):
    def __init__(self):

        self.dispenser = TestDispenser()
        self.cup_number = 0
        self.half_cup_number = 0
        self.eighth_cup_number = 0
        self.teaspoon_number = 0
        self.dispensing_id = Ingredient.SALT  # Default: id is salt (0)
        self.dispensing_id_text = SALT_DISPENSING_TEXT  # Default: salt
        self.dispensing_amount = 0
        self.dispensing_flag = False

        self.app = App(title="Pestle Co.")
        # All code must be added in th event loop
        # START
        # Set up the option window and hide it for now
        self.option_window = Window(self.app, title="Choosing a spice")
        self.option_window.hide()  # hide this window for now
        # Set up the dispensing window and hide it for now
        self.dispensing_window = Window(self.option_window, title="Dispensing")
        self.dispensing_window.hide()  # hide this window for now
        # Set up the welcome window
        #self.app.set_full_screen()
        self.welcome_message = Text(self.app,
                                    text="Pestle Co.",
                                    size=70,
                                    font="Times New Roman",
                                    color="blue")
        self.start_button = PushButton(self.app,
                                       command=self.open_option_window,
                                       text="Push to Start",
                                       width=20,
                                       height=5)
        self.start_button.text_color = (205, 133, 0)
        self.start_button.text_size = 30

        # Option page/window set up
        # Salt button
        self.salt_button = PushButton(self.option_window,
                                      command=self.open_salt_dispensing_window,
                                      text="Salt",
                                      align="top",
                                      width=10,
                                      height=2)
        self.salt_button.text_color = (205, 133, 0)
        self.salt_button.text_size = 20
        # Flour button
        self.flour_button = PushButton(
            self.option_window,
            command=self.open_flour_dispensing_window,
            text="Flour",
            align="top",
            width=10,
            height=2)
        self.flour_button.text_color = (205, 133, 0)
        self.flour_button.text_size = 20
        # Sugar button
        self.sugar_button = PushButton(
            self.option_window,
            command=self.open_sugar_dispensing_window,
            text="Sugar",
            align="top",
            width=10,
            height=2)
        self.sugar_button.text_color = (205, 133, 0)
        self.sugar_button.text_size = 20
        # Done button
        self.done_button = PushButton(self.option_window,
                                      command=self.close_option_window,
                                      text="Done",
                                      align="bottom",
                                      width=10,
                                      height=2)
        self.done_button.text_color = (205, 133, 0)
        self.done_button.text_size = 20

        # Dispensing page/window set up
        self.dispensing_text = Text(self.dispensing_window,
                                    text=self.dispensing_id_text)
        self.cup_button = PushButton(self.dispensing_window,
                                     command=self.add_a_cup,
                                     text="Cup")
        self.cup_number_text = Text(self.dispensing_window,
                                    text=str(self.cup_number) + " Cups(s)")
        self.cup_button.text_color = (205, 133, 0)
        self.cup_button.text_size = 20

        self.half_cup_button = PushButton(self.dispensing_window,
                                          command=self.add_a_half_cup,
                                          text="Half Cup")
        self.half_cup_number_text = Text(self.dispensing_window,
                                         text=str(self.half_cup_number) +
                                         " Half_cup(es)")
        self.half_cup_button.text_color = (205, 133, 0)
        self.half_cup_button.text_size = 20

        self.eighth_cup_button = PushButton(self.dispensing_window,
                                            command=self.add_a_eighth_cup,
                                            text="Eighth_cup")
        self.eighth_cup_number_text = Text(self.dispensing_window,
                                           text=str(self.eighth_cup_number) +
                                           " Eighth_cup(es)")
        self.eighth_cup_button.text_color = (205, 133, 0)
        self.eighth_cup_button.text_size = 20

        self.teaspoon_button = PushButton(self.dispensing_window,
                                          command=self.add_a_teaspoon,
                                          text="Teaspoon")
        self.teaspoon_number_text = Text(self.dispensing_window,
                                         text=str(self.teaspoon_number) +
                                         " Teaspoon(s)")
        self.teaspoon_button.text_color = (205, 133, 0)
        self.teaspoon_button.text_size = 20

        self.dispense_button = PushButton(self.dispensing_window,
                                          command=self.final_dispense,
                                          text="Dispense",
                                          align="bottom")
        self.reset_button = PushButton(self.dispensing_window,
                                       command=self.reset_measurement,
                                       text="Reset",
                                       align="bottom")
        # STOP
        print("here")
        self.app.display()

        # Helper functions: windows
    def open_option_window(self):
        self.option_window.show(wait=True)
        #self.option_window.set_full_screen()

    def close_option_window(self):
        self.option_window.exit_full_screen()
        self.option_window.hide()
        self.app.display()

    def open_dispensing_window(self):
        self.dispensing_window.show(wait=True)
        #self.dispensing_window.set_full_screen()

    def close_dispensing_window(self):
        self.dispensing_window.exit_full_screen()
        self.dispensing_window.hide()
        self.open_option_window()

    def open_salt_dispensing_window(self):
        self.dispensing_id_text = SALT_DISPENSING_TEXT
        self.dispensing_text.clear()
        self.dispensing_text.append(self.dispensing_id_text)
        self.dispensing_id = Ingredient.SALT
        self.open_dispensing_window()

    def open_flour_dispensing_window(self):
        self.dispensing_id_text = FLOUR_DISPENSING_TEXT
        self.dispensing_text.clear()
        self.dispensing_text.append(self.dispensing_id_text)
        self.dispensing_id = Ingredient.FLOUR
        self.open_dispensing_window()

    def open_sugar_dispensing_window(self):
        self.dispensing_id_text = SUGAR_DISPENSING_TEXT
        self.dispensing_text.clear()
        self.dispensing_text.append(self.dispensing_id_text)
        self.dispensing_id = Ingredient.SUGAR
        self.open_dispensing_window()

    def add_dispensing_amount(self, dispensing_id, unit):
        grams_per_cup = GRAMS_SALT_PER_CUP  # default
        conversion_per_cup = CUPS_PER_CUP  # default
        if dispensing_id == Ingredient.SALT:
            grams_per_cup = GRAMS_SALT_PER_CUP
        elif dispensing_id == Ingredient.FLOUR:
            grams_per_cup = GRAMS_FLOUR_PER_CUP
        elif dispensing_id == Ingredient.SUGAR:
            grams_per_cup = GRAMS_SUGAR_PER_CUP
        if unit == Unit.CUP:
            conversion_per_cup = CUPS_PER_CUP
        elif unit == Unit.HALF_CUP:
            conversion_per_cup = HALF_CUPS_PER_CUP
        elif unit == Unit.FOURTH_CUP:
            conversion_per_cup = FOURTH_CUPS_PER_CUP
        elif unit == Unit.EIGHTH_CUPS:
            conversion_per_cup = EIGHTH_CUPS_PER_CUP
        elif unit == Unit.TEASPOON:
            conversion_per_cup = TEASPOON_PER_CUP
        self.dispensing_amount += grams_per_cup / conversion_per_cup

    # Helper functions: dispensing
    def add_a_cup(self):
        self.cup_number += 1
        self.cup_number_text.clear()
        self.cup_number_text.append(str(self.cup_number) + " Cup(s)")
        self.add_dispensing_amount(self.dispensing_id, Unit.CUP)

    def add_a_half_cup(self):
        self.half_cup_number += 1
        self.half_cup_number_text.clear()
        self.half_cup_number_text.append(
            str(self.half_cup_number) + " Half Cup(s)")
        self.add_dispensing_amount(self.dispensing_id, Unit.HALF_CUP)

    def add_a_eighth_cup(self):
        self.eighth_cup_number += 1
        self.eighth_cup_number_text.clear()
        self.eighth_cup_number_text.append(
            str(self.eighth_cup_number) + " Eighth Cup(s)")
        self.add_dispensing_amount(self.dispensing_id, Unit.EIGHTH_CUPS)

    def add_a_teaspoon(self):
        self.teaspoon_number += 1
        self.teaspoon_number_text.clear()
        self.teaspoon_number_text.append(
            str(self.teaspoon_number) + " Teaspoon(s)")
        self.add_dispensing_amount(self.dispensing_id, Unit.TEASPOON)

    def ready_to_dispense(self):
        return self.dispensing_flag

    def get_slot_id(self):
        print(self.dispensing_id)

        if (self.dispensing_id == Ingredient.SALT):
            return 0
        if (self.dispensing_id == Ingredient.FLOUR):
            return 1
        if (self.dispensing_id == Ingredient.SUGAR):
            return 2
        #return 0

    def get_amount_in_grams(self):
        return self.dispensing_amount

    def reset_measurement(self):
        self.dispensing_amount = 0
        self.cup_number = 0
        self.cup_number_text.clear()
        self.cup_number_text.append(str(self.cup_number) + " Cup(s)")
        self.half_cup_number = 0
        self.half_cup_number_text.clear()
        self.half_cup_number_text.append(
            str(self.half_cup_number) + " Half Cup(s)")
        self.eighth_cup_number = 0
        self.eighth_cup_number_text.clear()
        self.eighth_cup_number_text.append(
            str(self.eighth_cup_number) + " Eighth Cup(s)")
        self.teaspoon_number = 0
        self.teaspoon_number_text.clear()
        self.teaspoon_number_text.append(
            str(self.teaspoon_number) + " Teaspoon(s)")

    def final_dispense(self):
        print("in final")
        self.dispensing_flag = True
        self.dispenser.dispense(self.get_slot_id(), self.dispensing_amount)
        self.reset_measurement()
        self.close_dispensing_window()  # Return to the dispensing window
        self.open_option_window()  # Return to the option window
Esempio n. 15
0
class SATCOM:
    def __init__(self):
        self.app = App(title="SATCOM", width=500, height=300, layout="grid")
        self.app.on_close(self.on_close)
        Text(self.app, text="Welcome to SATCOM", grid=[0, 0])
        self.satcom_time = Text(self.app,
                                text="SATCOM Time: UNKNOWN",
                                grid=[1, 0])
        self.satcom_time.text_color = "blue"
        Text(self.app, text="Satelite Connection Status: ", grid=[0, 1])
        self.satelite_status = Text(self.app, text="UNKNOWN", grid=[1, 1])
        self.satelite_status.text_color = "blue"
        Text(self.app, text="Satelite Messages: ", grid=[0, 2])
        self.satelite_msg = Text(self.app, text="0", grid=[1, 2])
        self.satelite_msg.text_color = "blue"
        Text(self.app, text="Current GPS Coordinates: ", grid=[0, 3])
        self.gps = Text(self.app, text="UNKNOWN", grid=[1, 3])
        self.gps.text_color = "blue"
        Text(self.app, text="Temp: ", grid=[0, 4])
        self.temp = Text(self.app, text="UNKNOWN", grid=[1, 4])
        self.temp.text_color = "blue"
        Text(self.app, text="Pressure: ", grid=[0, 5])
        self.pressure = Text(self.app, text="UNKNOWN", grid=[1, 5])
        self.pressure.text_color = "blue"
        Text(self.app, text="Humidity: ", grid=[0, 6])
        self.humidity = Text(self.app, text="UNKNOWN", grid=[1, 6])
        self.humidity.text_color = "blue"
        Text(self.app, text="Altitude: ", grid=[0, 7])
        self.altitude = Text(self.app, text="UNKNOWN", grid=[1, 7])
        self.altitude.text_color = "blue"
        self.send_message_window = Window(self.app,
                                          title="Send Message",
                                          width=400,
                                          height=80,
                                          layout="grid")
        Text(self.send_message_window, text="Message: ", grid=[0, 0])
        self.message_box = TextBox(self.send_message_window,
                                   width=30,
                                   grid=[1, 0])
        PushButton(self.send_message_window,
                   text="Send",
                   command=self.send_message,
                   grid=[2, 0])
        self.send_message_window.hide()
        self.messages_window = Window(self.app,
                                      title="Messages",
                                      width=400,
                                      height=300)
        Text(self.messages_window, text="Messages")
        self.message_list = ListBox(self.messages_window)
        self.message_list.width = 40
        self.message_list.height = 15
        self.messages_window.hide()
        PushButton(self.app,
                   text="Send Messages",
                   command=self.show_send_message,
                   grid=[0, 8])
        PushButton(self.app,
                   text="Check Messages",
                   command=self.show_messages,
                   grid=[1, 8])

    def on_close(self):
        self.clock.cancel()
        self.app.destroy()

    def show(self):
        self.clock = clock(1, self.get_data)
        self.app.display()

    def get_data(self):
        try:
            resp = requests.get(url="http://localhost:3939/status")
            data = resp.json()
            self.gps.value = "lat: %s lng: %s" % (data['gps']['lat'],
                                                  data['gps']['lng'])
            if data['gps']['lat'] == 'NOT FIXED' or data['gps']['lat'] == -1:
                self.gps.text_color = "red"
            else:
                self.gps.text_color = "green"
            self.satcom_time.value = "SATCOM Time: %s" % data['satcom']['time']
            self.satelite_status.value = data['satcom']['status']
            if data['satcom']['status'] == 'ACQUIRING':
                self.satelite_status.text_color = "red"
            else:
                self.satelite_status.text_color = "green"
            self.satelite_msg.value = len(data['unread'])
            if len(data['unread']) != 0:
                self.satelite_msg.text_color = "red"
            else:
                self.satelite_msg.text_color = "green"
            self.temp.value = data['sensors']['temperature']
            if data['sensors']['temperature'] == -1:
                self.temp.text_color = "red"
            else:
                self.temp.text_color = "green"
            self.pressure.value = data['sensors']['pressure']
            if data['sensors']['pressure'] == -1:
                self.pressure.text_color = "red"
            else:
                self.pressure.text_color = "green"
            self.humidity.value = data['sensors']['humidity']
            if data['sensors']['humidity'] == -1:
                self.humidity.text_color = "red"
            else:
                self.humidity.text_color = "green"
            self.altitude.value = data['sensors']['altitude']
            if data['sensors']['altitude'] == -1:
                self.altitude.text_color = "red"
            else:
                self.altitude.text_color = "green"
        except:
            print("Connection failed")

    def send_message(self):
        pass

    def show_send_message(self):
        self.send_message_window.show()

    def show_messages(self):
        self.messages_window.show()