Ejemplo n.º 1
0
def main():

    ComputeStrLayout = [[
        sg.Multiline(key='computeStr',
                     background_color='black',
                     text_color='yellow',
                     font="any 30",
                     size=(60, 4))
    ]]
    numsBtLayout = [[
        sg.Button(i * 3 + j,
                  size=(4, 2),
                  button_color=('white', 'green'),
                  key=i * 3 + j) for j in range(1, 4)
    ] for i in range(0, 3)]
    comBtLayout1= [[sg.Button('0',size=(4,2),key=0),sg.Button('.',size=(4,2),key='.')],\
        [sg.Button('(',size=(4,2),key='('),sg.Button('C',size=(4,2),key='C')],\
        [sg.Button(')',size=(4,2),key=')'),sg.Button('<=',size=(4,2),key='BackDel')],\
        ]
    comBtLayout2=[\
        [sg.Button('+',size=(4,2),key='+'),\
         sg.Button('-',size=(4,2),key='-'),\
         sg.Button('×',size=(4,2),key='*'),\
        sg.Button('÷',size=(4,2),key='/'),\
        sg.Button('=',size=(4,2),key='=')]\
    ]
    mainLayout=[[sg.Frame('',ComputeStrLayout)],\
                 [sg.Frame('',numsBtLayout),\
    sg.Column(comBtLayout1)],\
    [sg.Frame('',comBtLayout2)],\
    ]

    window = sg.Window('计算器', mainLayout)
    while True:
        event, values = window.read()
        if event in (sg.WIN_CLOSED, 'Exit'):
            #最后从屏幕上移除
            window.close()
            break
        if event in list(
                range(10)) or event in ['.', '(', ')', '+', '-', '*', '/']:
            window['computeStr'].update(values['computeStr'] + str(event))
        elif event == 'C':
            window['computeStr'].update('')
        elif event == '=':
            window['computeStr'].update("%.2f" %
                                        computeResult(values['computeStr']))
        elif event == 'BackDel':
            window['computeStr'].update(values['computeStr'][:-1])
Ejemplo n.º 2
0
import PySimpleGUIWeb as sg
import datetime

DEFAULT_BASE64_ICON = b'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'


sg.ChangeLookAndFeel('GreenTan')

layout =  [
            [sg.Text('PySimpleGUIWeb running on the web and in your browser!', size=(60,1), font=('Comic sans ms', 20), text_color='red')],
            [sg.Text('This program has been running for... ', size=(30,1)),sg.Text('', size=(30,1), key='_DATE_')],
            [sg.Text('', size=(30,1), key='_TEXT_')],
            [sg.Input('Single Line Input', do_not_clear=True, enable_events=True, size=(30,1))],
            [sg.Multiline('Multiline Input', do_not_clear=True, size=(40,4), enable_events=True)],
            [sg.Multiline('Multiline Output', size=(80,8),  key='_MULTIOUT_', font='Courier 12')],
            [sg.Checkbox('Checkbox 1', enable_events=True, key='_CB1_'), sg.Checkbox('Checkbox 2', default=True, enable_events=True, key='_CB2_')],
            [sg.Combo(values=['Combo 1', 'Combo 2', 'Combo 3'], default_value='Combo 2', key='_COMBO_',enable_events=True, readonly=False, tooltip='Combo box', disabled=False, size=(12,1))],
            [sg.Listbox(values=('Listbox 1', 'Listbox 2', 'Listbox 3'), size=(10,3))],
            [sg.Slider((1,100), default_value=80, key='_SLIDER_', visible=True, enable_events=True, orientation='h')],
            [sg.Spin(values=(1,2,3),initial_value=2, size=(4,1))],
            [sg.Image(filename=r'dot:logo.jpg')],
            [sg.OK(), sg.Button('Exit', button_color=('white', 'red'))]
          ]

window = sg.Window('My PySimpleGUIWeb Window',
                   default_element_size=(30,1),
                   font='Helvetica 18',
                   background_image=r'dot:logo.jpg'
                   ).Layout(layout)

start_time = datetime.datetime.now()
Ejemplo n.º 3
0
            title_location=sg.TITLE_LOCATION_TOP_RIGHT,
            #element_justification='right'
        )
    ],
    [
        sg.OK('+', key="add_item"),
        sg.Button('-', key="Delete-done"),
        sg.Button('^', key="Todo"),
        sg.Button('Archive list', key="Archive list")
    ],  #add_ext_ is the key for event handling
    [
        sg.Button('Save', key='Save'),
        sg.Button('Safe Exit', key='Safe Exit'),
        sg.Button('Open Folder', key=os.getcwd())
    ],
    [sg.Multiline('debugger', key="debug", size=(WIDTH, 2))],
]

sg.theme(THEME)
window = sg.Window(
    "*** TO DO ***",
    layout,
    web_port=1111,
    web_start_browser=False,
    #keep_on_top=True,
    #grab_anywhere=True,
    #no_titlebar=True,
    return_keyboard_events=True,
    #resizable=True,
    #location=(263, 430),
).Finalize()
        window.find_element('PLC_NEW').update("")
        window.find_element('SLOT_NEW').update("")
        window.find_element('TYPE_NEW').update("")
        window.find_element('AREA_NEW').update("")
        window.find_element('ADR_NEW').update("")
        window.find_element('ALIAS_NEW').update("data_alias")
        window.find_element('ACTIVATE_NEW').update(False)
        window.find_element('INTERVAL_NEW').update(intervals[3])
    elif button == "Show raw configuration file":
        #get contect of xml file
        tree = ET.parse(config_PATH)
        root = tree.getroot()
        xml_str = ET.tostring(root, encoding='utf-8', method='xml')
        reparsed = xml.dom.minidom.parseString(xml_str)
        pretty = reparsed.toprettyxml(encoding='utf-8')
        conf_layout = [[sg.Multiline(pretty, size=(100, 20))]]
        window_config = sg.Window('Raw configuration').Layout(conf_layout)
        conf_button, conf_val = window_config.Read(timeout=0)
        if button == None:
            window_config.close()

    elif button == 'Find aliases':
        aliases_plc = get_data_aliases(values['PLC'])
        window.find_element('ALIAS').update(values=aliases_plc)

    elif button == 'Find data':
        data_plc = get_data_by_alias(values['PLC'], values['ALIAS'])
        # check if there is any data for choosen plc and alias
        if len(data_plc):
            window.find_element('TYPE_EDIT').update(data_plc[0])
            window.find_element('AREA_EDIT').update(data_plc[1])
Ejemplo n.º 5
0
 [
     sg.Text('', size=(20, 1)),
     sg.Listbox(values=('Must get a follow up', 'May be interesting',
                        'Typical Source'),
                size=(20, 4),
                enable_events=True,
                key='_LIST_'),
     sg.Text('', size=(10, 1), key='_TEXT_002'),
     sg.Slider((1, 10),
               default_value=1,
               key='_SLIDER_',
               visible=True,
               enable_events=True),
     sg.Multiline('',
                  do_not_clear=True,
                  size=(40, 4),
                  enable_events=True,
                  key='_VAR_COMMENT_'),
     sg.Multiline('',
                  do_not_clear=True,
                  size=(40, 4),
                  enable_events=True,
                  key='_QUASAR_COMMENT_'),
     sg.Text(
         'http://skyserver.sdss.org/dr15/en/tools/explore/summary.aspx?ra=0.00591&dec=20.01226',
         size=(30, 1),
         key='_SDSS_')
 ]
 #[sg.Text('', size=(30,1), key='_TEXT_003')],
 #[sg.Text('Notes about quasar in general', size=(30,1), key='_TEXT__004')],
 #[sg.Input('', do_not_clear=True, enable_events=True, size=(70,1))],
Ejemplo n.º 6
0
     ],
                      [
                          sg.Radio('My first Radio!     ',
                                   "RADIO1",
                                   default=True,
                                   size=(10, 1)),
                          sg.Radio('My second Radio!', "RADIO1")
                      ]],
              title='Options',
              title_color='red',
              relief=sg.RELIEF_SUNKEN,
              tooltip='Use these to set flags')
 ],
 [
     sg.Multiline(
         default_text=
         'This is the default Text should you decide not to type anything',
         size=(35, 3)),
     sg.Multiline(default_text='A second multi-line', size=(35, 3))
 ],
 [
     sg.InputCombo(('Combobox 1', 'Combobox 2'), size=(20, 1)),
     sg.Slider(range=(1, 100),
               orientation='h',
               size=(34, 20),
               default_value=85)
 ],
 [sg.InputOptionMenu(('Menu Option 1', 'Menu Option 2', 'Menu Option 3'))],
 [
     sg.Listbox(values=('Listbox 1', 'Listbox 2', 'Listbox 3'),
                size=(30, 3)),
     sg.Frame('Labelled Group', [[
Ejemplo n.º 7
0
                ], [Sg.Button("Execute", size=(25, 1))]])
            ], [Sg.Column(launch.layout_final)],
            [
                Sg.DropDown(launch.mod.get("{}".format(element[0]))[3],
                            key="dd_ex")
            ],
            [
                Sg.Column(launch.layout),
                Sg.Column([[
                    Sg.Text(launch.mod.get("{}".format(element[0]))[1],
                            size=(800, 200),
                            key="{}".format(element[0]),
                            auto_size_text=True)
                ]])
            ],
            [Sg.Column([[Sg.Multiline("ok", key="ex_out", size=(500, 900))]])]
        ]

        mainWindow = Sg.Window("pswrapped",
                               layout=launch.layout_finals).Finalize()

    ex_out = mainWindow.FindElement("dd_ex")
    ex_ml = mainWindow.FindElement("ex_out")

    #print(v, old_v)
    #print(v)
    old_v = v

    if b == "dd_ex":
        ex_out = mainWindow.FindElement("dd_ex")
        ex_ml = mainWindow.FindElement("ex_out")
Ejemplo n.º 8
0
def HowDoI():
    '''
    Make and show a window (PySimpleGUI form) that takes user input and sends to the HowDoI web oracle
    Excellent example of 2 GUI concepts
        1. Output Element that will show text in a scrolled window
        2. Non-Window-Closing Buttons - These buttons will cause the form to return with the form's values, but doesn't close the form
    :return: never returns
    '''
    # -------  Make a new Window  ------- #
    sg.ChangeLookAndFeel('GreenTan')  # give our form a spiffy set of colors

    layout = [
        [sg.Text('Ask and your answer will appear here....', size=(40, 1))],
        [sg.MultilineOutput(size_px=(980, 400), key='_OUTPUT_')],
        # [ sg.Spin(values=(1, 2, 3, 4), initial_value=1, size=(2, 1), key='Num Answers', font='Helvetica 15'),
        [
            sg.Checkbox('Display Full Text',
                        key='full text',
                        font='Helvetica 15'),
            sg.T('Command History', font='Helvetica 15'),
            sg.T('', size=(40, 3), text_color=sg.BLUES[0], key='history')
        ],
        [
            sg.Multiline(size=(85, 5),
                         enter_submits=True,
                         key='query',
                         do_not_clear=False),
            sg.ReadButton('SEND',
                          button_color=(sg.YELLOWS[0], sg.BLUES[0]),
                          bind_return_key=True),
            sg.Button('EXIT', button_color=(sg.YELLOWS[0], sg.GREENS[0]))
        ]
    ]

    window = sg.Window(
        'How Do I ??',
        default_element_size=(30, 1),
        icon=DEFAULT_ICON,
        font=('Helvetica', ' 17'),
        default_button_element_size=(8, 2),
        return_keyboard_events=False,
    )
    window.Layout(layout)
    # ---===--- Loop taking in user input and using it to query HowDoI --- #
    command_history = []
    history_offset = 0
    while True:
        event, values = window.Read()
        # print(event, values)
        if type(event) is int:
            event = str(event)
        if event == 'SEND':
            query = values['query'].rstrip()
            window.Element('_OUTPUT_').Update(query, append=True)
            print(query)
            QueryHowDoI(query, 1, values['full text'],
                        window)  # send the string to HowDoI
            command_history.append(query)
            history_offset = len(command_history) - 1
            window.FindElement('query').Update(
                ''
            )  # manually clear input because keyboard events blocks clear
            window.FindElement('history').Update('\n'.join(
                command_history[-3:]))
        elif event == None or event == 'EXIT':  # if exit button or closed using X
            break
        elif 'Up' in event and len(command_history):  # scroll back in history
            command = command_history[history_offset]
            history_offset -= 1 * (history_offset > 0)  # decrement is not zero
            window.FindElement('query').Update(command)
        elif 'Down' in event and len(
                command_history):  # scroll forward in history
            history_offset += 1 * (history_offset < len(command_history) - 1
                                   )  # increment up to end of list
            command = command_history[history_offset]
            window.FindElement('query').Update(command)
        elif 'Escape' in event:  # clear currently line
            window.FindElement('query').Update('')

    window.Close()
Ejemplo n.º 9
0
def mainloop(file, database, savedump, records, orderby, guimode):
    """Get user Janpanse input then parse it and record new words into database."""
    jmd = Jamdict()
    knp = KNP()

    jumandict = sqlite3.connect(database)
    dictcursor = jumandict.cursor()
    dictcursor.execute(
        "CREATE TABLE IF NOT EXISTS words (id INTEGER PRIMARY KEY, name TEXT UNIQUE, desc TEXT, count INTEGER)"
    )
    dumper = open(savedump, 'w')

    # Pass any command line argument for Web use
    if guimode == "web":  # if there is use the Web Interface
        import PySimpleGUIWeb as sg
        import socket
    elif guimode == "tk":  # default uses the tkinter GUI
        import PySimpleGUI as sg
    elif guimode == "qt":
        import PySimpleGUIQt as sg
    else:
        import PySimpleGUIWx as sg

    # All the stuff inside your window.
    header_list = [
        "ID", "词汇", "读法", "原形", "词性", "词性细分", "活用型", "活用形", "语义信息", "代表符号"
    ]
    uifont = "Ariel 32"
    left_column_layout = [
        [
            sg.T("输入日语"),
            sg.FolderBrowse(),
        ],
        [
            sg.Multiline("", size=(75, 10), key="nihongo"),
        ],
        [
            sg.Button("分析",
                      size=(30, 3),
                      font=uifont,
                      button_color=('white', 'green'),
                      key="submit"),
            sg.Button("退出",
                      size=(30, 3),
                      font=uifont,
                      button_color=('white', 'red'),
                      key="exit")
        ],
        [
            sg.Listbox(values=[],
                       enable_events=True,
                       size=(75, 20),
                       key="parsedwords")
        ],
    ]
    right_column_layout = [
        [sg.T("词汇意义")],
        [
            sg.Listbox(values=[],
                       enable_events=True,
                       size=(75, 33),
                       key="foundentries")
        ],
    ]
    layout = [[
        sg.VSeperator(),
        sg.Column(left_column_layout),
        sg.VSeperator(),
        sg.Column(right_column_layout),
    ]]
    # Create the Window
    if guimode == "web":
        hostname = socket.gethostname()
        local_ip = socket.gethostbyname(hostname)
        print("local_ip is " + local_ip)
        window = sg.Window('日语学习',
                           layout,
                           web_ip=local_ip,
                           web_port=8888,
                           web_start_browser=False)
    else:
        window = sg.Window('日语学习', layout)

    resultlist = []
    # Run the Event Loop
    while True:
        event, values = window.read()
        if event == "exit" or event == sg.WIN_CLOSED:
            break
        # Folder name was filled in, make a list of files in the folder
        if event == "submit":
            userinput = values["nihongo"]
            print("=================================")
            print(userinput)
            userinput = userinput.strip()
            userinput = userinput.encode('utf-8',
                                         'surrogatepass').decode('utf-8')

            dumper.write(userinput + "\n\n")

            result = knp.parse(userinput.replace("\n", ""))

            print("=================================")
            print("词素")
            resultlist = result.mrph_list()
            parsedwords = []
            for mrph in resultlist:  # 访问每个词素
                if mrph.midasi in {"、", "。", "「", "」", "\␣"}:
                    continue
                message = "\tID:{}, 词汇:{}, 读法:{}, 原形:{}, 词性:{}, 词性细分:{}, 活用型:{}, 活用形:{}, 语义信息:{}, 代表符号:{}".format(
                    mrph.mrph_id, mrph.midasi, mrph.yomi, mrph.genkei,
                    mrph.hinsi, mrph.bunrui, mrph.katuyou1, mrph.katuyou2,
                    mrph.imis, mrph.repname)
                print(message)
                dumper.write(message + "\n")
                parsedwords += [message]

                # use exact matching to find exact meaning
                dictcheck = jmd.lookup(mrph.genkei)
                if len(dictcheck.entries) == 0:
                    dictcheck = jmd.lookup(mrph.midasi)
                    if len(dictcheck.entries) == 0:
                        dictcheck = jmd.lookup(mrph.yomi)
                if len(dictcheck.entries) > 0:
                    desc = ""
                    for entry in dictcheck.entries:
                        desc = desc + entry.text(compact=False,
                                                 no_id=True) + "\n"
                    print("\n" + desc)
                    dumper.write("\n" + desc + "\n")
                    dictcursor.execute(
                        'INSERT INTO words (name, desc, count) VALUES ("{}", "{}", "{}") ON CONFLICT (name) DO UPDATE SET count = count + 1'
                        .format(mrph.genkei.replace('"', '""'),
                                desc.replace('"', '""'), 1))

            jumandict.commit()
            window["parsedwords"].update(parsedwords)

        elif event == "parsedwords":  # A file was chosen from the listbox
            selectedword = values["parsedwords"][0]
            print(selectedword)
            selectedid = int(selectedword.split(',')[0].split(':')[1].strip())
            print("selectedid=" + str(selectedid) + " among " +
                  str(len(resultlist)) + " entries")
            foundentries = []
            for mrph in resultlist:  # 访问每个词素
                if selectedid != mrph.mrph_id:
                    continue
                message = "\tID:{}, 词汇:{}, 读法:{}, 原形:{}, 词性:{}, 词性细分:{}, 活用型:{}, 活用形:{}, 语义信息:{}, 代表符号:{}".format(
                    mrph.mrph_id, mrph.midasi, mrph.yomi, mrph.genkei,
                    mrph.hinsi, mrph.bunrui, mrph.katuyou1, mrph.katuyou2,
                    mrph.imis, mrph.repname)
                print(message)
                # use exact matching to find exact meaning
                dictcheck = jmd.lookup(mrph.genkei)
                if len(dictcheck.entries) == 0:
                    dictcheck = jmd.lookup(mrph.midasi)
                    if len(dictcheck.entries) == 0:
                        dictcheck = jmd.lookup(mrph.yomi)
                foundentries += [message]
                foundentries += ["==================================="]
                if len(dictcheck.entries) > 0:
                    for entry in dictcheck.entries:
                        desc = entry.text(compact=False, no_id=True)
                        print("\n" + desc)
                        foundentries += [desc]

            window["foundentries"].update(foundentries)

    window.close()
    jumandict.close()
    dumper.close()
Ejemplo n.º 10
0
        key='_JSONURLINPUT_',
        enable_events=False,
        tooltip='Input JSON Data Export URL(http://)',
        disabled=False,
        size=(60,1),
        do_not_clear=True,
        ),
        sg.Text('JSON data export URL(http://)', size=(30,1), font=('Helvetica, 16'))
], [
    sg.Button('Start Logging', button_color=('white', 'blue')),
    sg.Button('Stop Logging', button_color=('white', 'green')),
    sg.Button('Stop Server', button_color=('white', 'red'))
], [
    sg.Multiline(
        'Data Output',
        size=(160, 12),
        key='_MULTIOUT_',
        font='Courier 14',
        autoscroll=True,)
    
]]
'''
sg.Output(size=(160,12))
    '''

# create the "Window"
window = sg.Window(
    'VSCapture Logging Interface', layout=layout,
    default_element_size=(60, 2),
    font='Helvetica 18',
    web_port=WEBPORT, web_start_browser=False,
    web_multiple_instance=True, disable_close=True,