(Jul-28-2018, 09:53 PM)Truman Wrote: ...and for this code it opens google map immediately instead of letting user to write an address and then opens it ( at least that's how I understand this code ).
It will close immediately when calling shell from a .exe generated bye these tools.
The trick is to use
input()
to stop it from close immediately.
Here some fixes and will show two version,one with
sys.srgv
and one with
input()
.
# maps.py
import webbrowser, sys, pyperclip
def my_func(get_add):
if len(sys.argv) > 1:
address = ' '.join(get_add)
pyperclip.copy(address)
address = pyperclip.paste()
input('Copied to clipboard,Enter to show in Browser')
webbrowser.open(f'https://www.google.com/maps/place/{address}')
else:
print('Something went wrong')
input('Enter to exit')
def test_it(args):
print(args[1:])
my_func(args[1:])
if __name__ == '__main__':
test_it(sys.argv)
build with
pyinstaller --onefile maps.py
With this one have to remember that work as
sys.argv
from command line.
So can not run the
maps.exe
bye doubleclick on it,have to give argument.
Output:
C:\code\dist
λ maps.exe
[]
Something went wrong
Enter to exit
# With argument it work
C:\code\dist
λ maps.exe london
['london']
Copied to clipboard,Enter to show in Browser
# maps.py
import webbrowser, sys, pyperclip
def my_func(city):
if isinstance(city, str):
pyperclip.copy(city)
address = pyperclip.paste()
input('Copied to clipboard,Enter to show in Browser')
webbrowser.open(f'https://www.google.com/maps/place/{address}')
else:
print('Something went wrong')
input('Enter to exit')
def test_it():
city = input('Enter name of city: ')
my_func(city)
if __name__ == '__main__':
test_it()
Build with
pyinstaller --onefile maps.py
Now can doubleclick on
maps.exe
and shell will stay open till have entered city.