I use script:
#!/usr/bin/python
from uuid import getnode as get_mac
import socket
import requests
import datetime
import os
def main():
print('start')
i = datetime.datetime.now()
#print ("Current date & time = %s" % i)
headers = {"Content-Type": "text/html; charset=UTF-8"}
r = requests.post("http://michulabs.pl", data={'name' : 'CI17nH', 'ip' : getIp(), 'mac' : getMac(), 'source' : 'so', 'join_date' : i})
print(r.status_code, r.reason)
print(r.text) # TEXT/HTML
print(r.status_code, r.reason) # HTTP
os.system('zenity --warning --text="It is part of master thesis. \nThis script is safe but you should never open files from untrusted source. \nThanks for help!"')
"""
method to read ip from computer
it will be saved in database
"""
def getIp():
ip = socket.gethostbyname(socket.gethostname())
print 'ip: ' + str(ip)
return ip
"""
method to read mac from computer
it will be saved in database
"""
def getMac():
mac = get_mac()
print 'mac: ' + str(mac)
return mac
if __name__ == "__main__":
main()
it works good on Linux(Kali Linux) but when I use this on Windows (after creating .exe file by py2exe) message box pop up and then immediately disappear without waiting for clicking 'OK'. How can I force it to wait on clicked button?
Using tkMessageBox
is almost identical to using os.system
and zenity
to show warning message box.
import tkMessageBox as messagebox
import Tkinter as tk
root = tk.Tk() # creates a window and hide it so it doesn't show up
root.withdraw()
messagebox.showwarning(
"Error", # warning title
"It is part of master thesis. \nThis script is safe but you should never open files from untrusted source. \nThanks for help!") # warning message
root.destroy() # destroys the window
To address tk window not showing up after compiling using py2exe, you will need to include "dll_excludes": ["tcl85.dll", "tk85.dll"]
inside your options
when setting up, which exclude the two dlls that causes errors.
# your setup options will look something like this
setup(options = {'py2exe': {'bundle_files': 1, 'compressed': True, "dll_excludes": ["tcl85.dll", "tk85.dll"])}) # same setup file but include that too
Following the comments I think you need to generate the dialog box via tkinter. Here's an example:
import tkMessageBox
import Tkinter as tk
root = tk.Tk()
root.withdraw()
tkMessageBox.showwarning(
"Message Title",
"Your Message")
root.destroy()
Change os.system...
for the code above
You may want to check more tkinter dialog examples
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With