Witam!
Jestem początkującym w Pythonie, i napotkałem się na pewien problem. Wygląda on tak że jak otwieram program za pomocą CMD to wszystko jest w porządku, a jak chcę stworzyć z pliku Pythona, program z rozszerzeniem .exe, to przy otwieraniu program się chyba zaplęta i otwiera mi dwa razy to samo okno. Może ktoś z was będzie wiedział jak temu zapobiec to byłbym bardzo wdzięczny. Używam systemu Windows. poniżej przesyłam kod pliku, czy potrzeba również plik exe?
from psutil import virtual_memory
from gpuinfo.windows import get_gpus
from tkinter import *
import multiprocessing
import psutil
import cpuinfo
import pymysql
import bcrypt
import re
def patch_crypto_be_discovery():
"""
Monkey patches cryptography's backend detection.
Objective: support pyinstaller freezing.
"""
from cryptography.hazmat import backends
try:
from cryptography.hazmat.backends.commoncrypto.backend import backend as be_cc
except ImportError:
be_cc = None
try:
from cryptography.hazmat.backends.openssl.backend import backend as be_ossl
except ImportError:
be_ossl = None
backends._available_backends_list = [
be for be in (be_cc, be_ossl) if be is not None
]
def sprawdz(event):
multiprocessing.freeze_support()
con = pymysql.connect(host='localhost', user='root',
password='', database='maxbench')
with con:
abc = entry2.get()
email = abc
cur = con.cursor()
cur.execute(
"SELECT * from users where email=%s ", email)
rows = cur.fetchall()
for row in rows:
numer_id = ("{0}".format(row[0]))
con.commit()
info = cpuinfo.get_cpu_info()['brand'].split('@', 1)
Proc = info[0]
obj_Disk = psutil.disk_usage('/')
a = obj_Disk.free / (1024**3)
Disc = ('%.0f GB' % a)
mem = virtual_memory()
b = mem.total / (1024**3)
Mem = ('%.0f GB' % b)
connection = pymysql.connect(host='localhost', user='root',
password='', database='maxbench')
cursor = connection.cursor()
sql = "INSERT INTO components(user_id,cpu,ram,disc) VALUES('%s','%s','%s','%s')" \
% (numer_id, Proc, Mem, Disc)
cursor.execute(sql)
karty = []
wyjatki = ["(R)", 'NVIDIA', 'Graphics', ]
for gpu in get_gpus():
karty.append(re.sub("|".join(wyjatki), "", gpu.name))
# karty.append(gpu.name.replace('Intel(R)' + HD + 'Graphics', ''))
for i in range(len(karty)):
sql1 = "INSERT INTO user_videos(user_id,gpu) VALUES('%s','%s')" \
% (numer_id, karty[i])
cursor.execute(sql1)
connection.commit()
okno = Tk()
okno.title("Sprawdź podzespoły:")
okno.geometry("320x160")
okno.eval('tk::PlaceWindow %s center' %
okno.winfo_pathname(okno.winfo_id()))
okno.resizable(0, 0)
# p = StringVar()
etykieta = Label(okno, text="Procesor: " + Proc)
etykieta.pack()
# p.set("Procesor: " + Proc)
# m = StringVar()
etykieta1 = Label(okno, text="Pamięć ram: " + Mem)
etykieta1.pack()
# m.set("Pamięć ram: " + Mem)
# d = StringVar()
etykieta2 = Label(okno, text="Dostępne miejsce na dysku: " + Disc)
etykieta2.pack()
# d.set("Dostępne miejsce na dysku: " + Disc)
# k = StringVar()
etykieta3 = Label(okno, text='\n'.join('Karta graficzna: {}'.format(karta)
for karta in karty))
etykieta3.pack()
# s = '\n'.join('Karta graficzna: {}'.format(karta)
# for karta in karty)
# k.set(s)
def close(event):
okno.destroy()
okno1.destroy()
przycisk = Button(okno, text="Zamknij program")
przycisk.bind("<Button-1>", close)
przycisk.pack()
okno.mainloop()
okno1 = Tk()
okno1.title('Zaloguj sie')
okno1.geometry("320x220")
okno1.eval('tk::PlaceWindow %s center' %
okno1.winfo_pathname(okno1.winfo_id()))
okno1.resizable(0, 0)
# v = StringVar()
label1 = Label(okno1, text="Podaj email: ")
label1.pack()
entry2 = Entry(okno1)
entry2.pack()
# s = v.get()
# p = StringVar()
label2 = Label(okno1, text="Podaj hasło: ")
label2.pack()
entry1 = Entry(okno1)
entry1.pack()
# password2 = p.get()
# password2 = input("password: ")
def click(event):
abc = entry2.get()
email = abc
passwd = entry1.get()
password2 = passwd
con = pymysql.connect(host='db4free.net', user='kwakus18',
password='Kwakus1998', database='podzespoly')
with con:
cur = con.cursor()
password1 = cur.execute(
"SELECT * from users where email=%s ", email)
rows = cur.fetchall()
for row in rows:
password1 = ("{0}".format(row[4]))
# hashed = bcrypt.hashpw(password1, bcrypt.gensalt())
if bcrypt.hashpw(password2.encode(encoding='UTF-8', errors='strict'), password1.encode(encoding='UTF-8', errors='strict')) == password1.encode(encoding='UTF-8', errors='strict'):
yes = Label(okno1, text="Logowanie udane")
yes.pack()
mButton1 = Button(
okno1, text="Sprawdź podzespoły")
mButton1.bind("<Button-1>", sprawdz)
mButton1.pack()
else:
yes1 = Label(okno1, text="Logowanie nieudane")
yes1.pack()
mButton = Button(okno1, text="Zaloguj się")
mButton.bind("<Button-1>", click)
mButton.pack()
okno1.mainloop()