Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from tkinter import Button, Checkbutton, Radiobutton, Frame, Tk, GROOVE, SOLID, Label, StringVar, IntVar, Entry, Text, END, DISABLED, Toplevel, Message
- from tkinter.ttk import Progressbar, Treeview, Scrollbar
- import tkinter.font as tkFont
- from urllib.request import urlopen, urlretrieve
- from json import loads
- import datetime
- from time import sleep
- from os import getenv, mkdir, chdir, system
- import _thread
- from win32clipboard import OpenClipboard, GetClipboardData, CloseClipboard
- from requests import get
- from multiprocessing import Queue
- global users
- global table_
- global proxy
- global header_
- proxy = []
- homePath = getenv('HOMEPATH')
- path = homePath + "\AppData\Roaming\Jotler"
- apikey = ''
- try:
- mkdir(path)
- except:
- pass
- chdir(path)
- root=Tk()
- root.title('Jotler')
- root.geometry('220x125+100+100') # ширина=500, высота=400, x=300, y=200
- root.resizable(False, False) # размер окна может быть изменён только по горизонтали
- relief = GROOVE
- relief_ = SOLID
- users = []
- # /*/~~~~~~~~~~~ LOGIN ~~~~~~~~~~~~~
- def log_in(login, password, remember, r):
- login = str(login)
- password = str(password)
- if r == 0:
- if remember == 1:
- open('login.txt', 'w+').write(login + '\n' + password)
- url = r'http://mailf.tk/check.php?login=' + login + '&password=' + password
- result = urlopen(url).read().decode('utf-8')
- if r == 0 and remember == 1 and result == 1:
- open('login.txt', 'w+').write(login+'\n'+password)
- if result == '1':
- programm()
- else:
- result_label['text'] = 'Error!'
- def login():
- url = 'http://mailf.tk/check.php?login=' + login + '&password=' + password
- result = urlopen(url).read().decode('utf-8')
- if result == '1':
- programm()
- else:
- result_label['text'] = 'Error!'
- def programm():
- try:
- frame1.destroy()
- except:
- pass
- root.geometry('270x900+100+100')
- frame2 = Frame(root, bd=5, width=250, height=105, highlightbackground='black', highlightthickness=1, bg='white')
- whatscan = Label(frame2, text='Game: ', bg='white')
- selectgame = StringVar(frame2, '2')
- selectgame_rbtn_dota = Radiobutton(frame2, text='Dota 2', variable=selectgame, value='1', bg='white',
- tristatevalue=0)
- selectgame_rbtn_cs = Radiobutton(frame2, text='CS:GO', variable=selectgame, value='2', bg='white',
- tristatevalue=0)
- source_lbl = Label(frame2, text='Source: ', bg='white')
- source = StringVar(frame2, '2')
- source_group = Radiobutton(frame2, text='Steam group', variable=source, value='1', bg='white', tristatevalue=0)
- source_friend = Radiobutton(frame2, text='Friend list', variable=source, value='2', bg='white', tristatevalue=0)
- id_lbl = Label(frame2, text='ID: ', bg='white')
- id_txt = Entry(frame2, width=30, relief=relief_, bg='white')
- scan_btn = Button(frame2, text='Start scanning', width=32, relief=relief_, bg='white', bd=1)
- source_friend.select()
- frame2.place(x=10, y=10)
- whatscan.place(x=0, y=0)
- selectgame_rbtn_dota.place(x=50, y=0)
- selectgame_rbtn_cs.place(x=110, y=0)
- source_lbl.place(x=0, y=20)
- source_group.place(x=50, y=20)
- source_friend.place(x=150, y=20)
- id_lbl.place(x=0, y=40)
- id_txt.place(x=50, y=42)
- scan_btn.place(x=0, y=70)
- pb_hd = Progressbar(root, orient='horizontal', mode='determinate', length=250)
- pb_hd.place(x=10, y=120)
- def check_acc():
- url = 'http://mailf.tk/check.php?login=' + login + '&password=' + password
- a = urlopen(url).read().decode('utf-8')
- return a
- def sort_(arr):
- temp = 0
- for i in range(0, len(arr)):
- for j in range(0, len(arr)-1):
- if (arr[j][1] > arr[j + 1][1]):
- temp = arr[j]
- arr[j] = arr[j + 1]
- arr[j + 1] = temp
- arr_ = []
- for k in range(0, len(arr)):
- d = len(arr)-1
- arr_.append(arr[d-k])
- return arr_
- # ~~~~~~~~~~~~~~~~~ LOGIN ~~~~~~~~~~~~~~~~~~~~~~
- # def add_friend(users_):
- # cmd = []
- # for k in range(0, len(users_)-1):
- # cmd.append('start steam://friends/add/' + str(users_[k]))
- # for k in range(0, len(cmd)):
- # if k / 5 == 0:
- # sleep(5)
- # system(cmd[k])
- # def open_b(users):
- # pass
- class AddProxyWindow():
- def __init__(self):
- self._create_window()
- def _create_window(self):
- self.window = Toplevel()
- self.window.geometry('300x645')
- self.textbox = Text(self.window, height=37, width=37)
- self.textbox.place(x=0,y=25)
- self.button = Button(self.window, height=1, width=42, text='Paste', bg='grey', command=lambda: self.paste())
- self.button.place(x=0, y=0)
- self.button_apply = Button(self.window, height=1, width=42, text='Save', bg='grey', command=lambda: self.save())
- self.button_apply.place(x=0,y=620)
- def paste(self):
- OpenClipboard()
- data = GetClipboardData()
- f = open('file.txt', 'w+')
- f.write(self.textbox.get(0.0, END))
- if self.textbox.get(0.0, END) != '\n':
- self.textbox.insert(END, '\r\n')
- self.textbox.insert(END, data)
- CloseClipboard()
- def save(self):
- text = self.textbox.get("1.0", END)
- text = text.split('\r\n')
- for k in text:
- proxy.append(k)
- self.window.destroy()
- class McListBox():
- """use a ttk.TreeView as a multicolumn list_Box"""
- def __init__(self, header_):
- self.tree = None
- self._setup_widgets(header_)
- def _setup_widgets(self, header_):
- container = Frame(root, bd=0, width=240, height=230, highlightbackground='black', highlightthickness=1, bg='white', padx=0, pady=0)
- container.pack(fill=None, expand=False, in_=frame3)
- # create a treeview with dual scrollbars
- self.tree = Treeview(columns=header_, show="headings")
- self.tree.grid(column=0, row=0, sticky='ns', in_=container)
- vsb = Scrollbar(orient="vertical",
- command=self.tree.yview)
- vsb.grid(column=1, row=0, sticky='ns', in_=container)
- for col in header_:
- self.tree.heading(col, text=col.title(),
- command=lambda c=col: sortby(self.tree, c))
- # adjust the column's width to the header_ string
- self.tree.column(col, width=55)
- def _build_tree(self, list_):
- header_ = ['Steam id', 'Value']
- for item in list_:
- self.tree.insert('', 'end', values=item)
- # adjust column's width if necessary to fit each value
- for ix, val in enumerate(item):
- self.tree.column(header_[ix],width=55)
- def _add_in_tree(self, item):
- header_ = ['Steam id', 'Value']
- self.tree.insert('', 'end', values=item)
- # adjust column's width if necessary to fit each value
- # for ix, val in enumerate(item):
- # print(item[3])
- # self.tree.column(header_[ix],width=55)
- def add_selected(self):
- add_btn['text'] = 'Adding..'
- add_btn['state'] = DISABLED
- curItems = self.tree.selection()
- items = []
- cmd = []
- for k in range(0, len(curItems)):
- item = self.tree.item(curItems[k])
- item = item['values'][0]
- items.append(item)
- for k in range(0, len(items)):
- cmd.append('start steam://friends/add/' + str(items[k]))
- for k in range(0, len(cmd)):
- if k != 0:
- if k % 5 == 0:
- sleep(5)
- system(cmd[k])
- self.tree.delete(curItems)
- add_btn['text'] = 'Add selected'
- add_btn['state'] = 'normal'
- # add_friend(item)
- def open_browser(self):
- open_btn['text'] = 'Opening..'
- open_btn['state'] = DISABLED
- curItems = self.tree.selection()
- items = []
- cmd = []
- for k in range(0, len(curItems)):
- item = self.tree.item(curItems[k])
- item = item['values'][0]
- items.append(item)
- for k in range(0, len(items)):
- cmd.append('start http://steamcommunity.com/profiles/' + str(items[k]))
- for k in range(0, len(cmd)):
- system(cmd[k])
- self.tree.delete(curItems)
- open_btn['text'] = 'Open in browser'
- open_btn['state'] = 'normal'
- def sortby(tree, col):
- """sort tree contents when a column header is clicked on"""
- # grab values to sort
- data = [(tree.set(child, col), child) \
- for child in tree.get_children('')]
- # if the data to be sorted is numeric change to float
- #data = change_numeric(data)
- # now sort the data in place
- data.sort(reverse=1, key=lambda x: float(x[0]))
- for ix, item in enumerate(data):
- tree.move(item[1], '', ix)
- # switch the heading so it will sort in the opposite direction
- tree.heading(col, command=lambda col=col: sortby(tree, col))
- # switch the heading so it will sort in the opposite direction
- # /*/~~~~~~~~~~~~~~~ SCANNER ~~~~~~~~~~~~~~~~~
- def LastRow(file):
- now = datetime.datetime.now()
- year = str(now.year)
- month = str(now.month)
- day = str(now.day)
- try:
- lines = file.readlines()
- last_line = lines[-1]
- str1 = last_line.split('.')
- year1 = str1[0]
- month1 = str1[1]
- day1 = str1[2]
- if year == year1 and month == month1:
- if (int(day) - int(day1)) > 2:
- file.close()
- file = open('download.log', 'w+')
- file.write(year + '.' + month + '.' + day)
- file.close()
- return 0
- else:
- return 1
- except:
- file.close()
- file = open('download.log', 'w+')
- file.write(year + '.' + month + '.' + day)
- file.close()
- return 0
- def start_scan(selectgame, source, id):
- table_.tree.delete(*table_.tree.get_children())
- scan_btn['text'] = 'Scanning...'
- scan_btn['state'] = DISABLED
- progress_bar['mode']='indeterminate'
- progress_bar.start(50)
- load_pric = load_price(selectgame)
- prices_c = load_pric[0]
- gameid = load_pric[1]
- gamename = load_pric[2]
- data = take_data()
- find_m = find_members(source, id)
- parsel = parse_lvl.get()
- parseh = parse_hours.get()
- success_api_key = 1
- global parse
- parse = 0
- if parsel == 1 and parseh == 1:
- header_ = ['Steam id', 'Value', 'Hours', 'Level']
- parse = 1
- if parsel == 1 and parseh == 0:
- header_ = ['Steam id', 'Value', 'Level']
- parse = 2
- if parsel == 0 and parseh == 1:
- header_ = ['Steam id', 'Value', 'Hours']
- parse = 3
- if parsel == 0 and parseh == 0:
- header_ = ['Steam id', 'Value']
- parse = 0
- if parsel == 1 or parseh == 1 or (parsel == 1 and parseh == 1):
- try:
- r = get('http://api.steampowered.com/IPlayerService/GetSteamLevel/v1/?key='+apikey+'&steamid=76561198086405826').text
- if r != '<html><head><title>Forbidden</title></head><body><h1>Forbidden</h1>Access is denied. Retrying will not help. Please verify your <pre>key=</pre> parameter.</body></html>':
- success_api_key =1
- else: success_api_key = 0
- except: success_api_key = 0
- if find_m != 'error' and success_api_key == 1:
- members_ = find_m[0]
- group_id = find_m[1]
- progress_bar.stop()
- progbar_proc.set(0)
- progress_bar['mode'] = 'determinate'
- proxy_len = len(proxy)
- u_p = use_proxy.get()
- try:
- m = len(members_) // proxy_len
- except:
- m = 1
- global p
- progress_bar['max'] = len(members_)
- if u_p == 1:
- for k in range(0, proxy_len):
- if k != 0:
- if u_p == 1: proxy_={"http": "http://" + str(proxy[k])}
- delta = (k+1)*m
- if m != 1:
- members = members_[:delta][-m:]
- if u_p == 1:
- _thread.start_new_thread(check_members, (members, gameid, prices_c, data, proxy_))
- else:
- _thread.start_new_thread(check_members, (members, gameid, prices_c, data, 'a'))
- else:
- members = members_[k]
- if u_p == 1:
- _thread.start_new_thread(check_members, (members, gameid, prices_c, data, proxy_))
- else: _thread.start_new_thread(check_members, (members, gameid, prices_c, data, 'a'))
- else:
- members = members_[:m]
- _thread.start_new_thread(check_members, (members, gameid, prices_c, data, 'a'))
- else:
- check_members(members_, gameid, prices_c, data, 'a')
- scan_btn['text'] = 'Start scanning'
- scan_btn['state'] = 'normal'
- else:
- if find_m == 'error': error(1)
- if success_api_key == 0: error(2)
- def error(a):
- error = Toplevel()
- error.title = 'Error'
- error.geometry('100x50+150+150')
- if a == 1:
- msg = 'Broken id'
- if a == 2:
- msg = 'Broken apikey'
- Message(error, text=msg).pack()
- scan_btn['text'] = 'Start scanning'
- scan_btn['state'] = 'normal'
- progress_bar.stop()
- progress_bar['mode'] = 'indeterminate'
- progbar_proc.set(0)
- def load_price(selectgame):
- try:
- file = open('download.log', 'r+')
- except:
- file = open('download.log', 'w+')
- file.close()
- file = open('download.log', 'r+')
- s = LastRow(file)
- if s == 0:
- urlretrieve('https://files.opskins.media/file/opskins-static/pricelist/730.json', '730.json')
- urlretrieve('https://files.opskins.media/file/opskins-static/pricelist/570.json', '570.json')
- urlretrieve('https://files.opskins.media/file/opskins-static/pricelist/578080.json', '578080.json')
- if selectgame == '2':
- prices_c = loads(open('730.json', 'r').read())
- gameid = 730
- gamename = 'cs'
- elif selectgame == '1':
- prices_c = loads(open('570.json', 'r').read())
- gameid = 570
- gamename = 'dota'
- elif selectgame == '3':
- prices_c = loads(open('578080.json', 'r').read())
- gameid = 578080
- gamename = 'pubg'
- return [prices_c, gameid, gamename]
- def take_data():
- now = datetime.datetime.now()
- year = str(now.year)
- month = str(now.month-1)
- day = str(15)
- if len(month) == 1:
- month = '0' + month
- if len(day) == 1:
- day = '0' + day
- data = year + '-' + month + '-' + day
- return data
- def find_members(source, id):
- # http://api.steampowered.com/ISteamUser/GetFriendList/v0001/?key=347F01AC698549C49568B7063C80B41F&steamid=76561198378856393&relationship=friend
- # group_id = 'team1avalanche'
- s = source
- members_ = []
- if s == '1':
- # try:
- url = 'http://steamcommunity.com/groups/' + id + '/memberslistxml/?xml=1'
- html = urlopen(url).read().decode('utf-8')
- pages = html.split('<totalPages>')[1].split('</totalPages>')[0]
- for k in range(1, int(pages) + 1):
- url = 'http://steamcommunity.com/groups/' + id + '/memberslistxml/?xml=1&p=' + str(k)
- html = urlopen(url).read().decode('utf-8')
- members = html.split('<members>')[1].split('</members>')[0].split('\r\n')
- for k in range(1, (len(members) - 1)):
- members_.append(str(members[k]).split('>')[1].split('<')[0])
- b = 0
- return [members_, id]
- # except:
- # return 'error'
- elif s == '2':
- try:
- url = 'http://api.steampowered.com/ISteamUser/GetFriendList/v0001/?key=347F01AC698549C49568B7063C80B41F&steamid=' + id + '&relationship=friend'
- js = loads(urlopen(url).read().decode('utf-8'))
- js = js['friendslist']['friends']
- members_ = []
- for k in range(0, len(js)):
- members_.append(js[k]['steamid'])
- b = 0
- return [members_, id]
- except:
- return 'error'
- def check_members(members_, gameid, prices_c, data, proxy_):
- for k in range(0, len(members_) - 1):
- root.update()
- steamid = members_[k]
- user = check(steamid, gameid, prices_c, data, proxy_)
- if user != 'hvnt':
- j = 0
- users.append(user)
- progress_bar.step(1)
- def check_hours(steamid, gameid):
- try:
- json_ = loads(get('https://api.steampowered.com/IPlayerService/GetOwnedGames/v1/?key=' + str(apikey) + '&steamid=' + str(steamid) + '&format=json').text)['response']['games']
- for k in range(len(json_)):
- if json_[k]['appid'] == gameid:
- hours = int(int(json_[k]['playtime_forever']) / 60)
- break
- return hours
- except: return 0
- def check_lvl(steamid, gameid):
- try:
- lvl = loads(get('http://api.steampowered.com/IPlayerService/GetSteamLevel/v1/?key=' + str(apikey) + '&steamid=' + str(steamid)).text)['response']['player_level']
- lvl = int(lvl)
- return lvl
- except: return 0
- def check(steamid, gameid, prices_c, data, proxy_):
- url = 'http://steamcommunity.com/inventory/' + steamid + '/' + str(gameid) + '/2?l=english&count=5000'
- try:
- if proxy_ != 'a':
- json_ = loads(get(url, proxies=proxy_).text)
- else:
- json_ = loads(get(url).text)
- t = json_['descriptions']
- except:
- return 'hvnt'
- hash_name = []
- for i in range(0, len(t) - 1):
- hash_name.append(t[i]['market_hash_name'])
- summ = 0.00
- for i in range(0, len(hash_name) - 1):
- try:
- price = prices_c[hash_name[i]][data]['price']
- summ += float(price)
- except:
- pass
- url = steamid
- summ = float(round(summ / 100, 2))
- if parse == 1:
- hours = check_hours(steamid, gameid)
- lvl = check_lvl(steamid, gameid)
- user = [url, summ, hours, lvl]
- if parse == 2:
- lvl = check_lvl(steamid, gameid)
- user = [url, summ, lvl]
- if parse == 3:
- hours = check_hours(steamid, gameid)
- user = [url, summ, hours]
- if parse == 0:
- user = [url, summ]
- table_._add_in_tree(user)
- return user
- # ~~~~~~~~~~~~ SCANNER ~~~~~~~~~~~~~~~~~
- def programm():
- try:
- frame1.destroy()
- except: pass
- root.geometry('270x590')
- frame2 = Frame(root, bd=5, width=250, height=105, highlightbackground='black', highlightthickness=1, bg='white')
- whatscan = Label(frame2, text='Game: ', bg='white')
- selectgame = StringVar(frame2, '2')
- selectgame_rbtn_dota = Radiobutton(frame2, text='Dota', variable=selectgame, value='1', bg='white', tristatevalue=0)
- selectgame_rbtn_cs = Radiobutton(frame2, text='CS', variable=selectgame, value='2', bg='white', tristatevalue=0)
- selectgame_rbtn_pubg = Radiobutton(frame2, text='PUBG', variable=selectgame, value='3', bg='white', tristatevalue=0)
- source_lbl = Label(frame2, text='Source: ', bg='white')
- source = StringVar(frame2, '2')
- source_group = Radiobutton(frame2, text='Steam group', variable=source, value='1', bg='white', tristatevalue=0)
- source_friend = Radiobutton(frame2, text='Friend list', variable=source, value='2', bg='white', tristatevalue=0)
- id_lbl = Label(frame2, text='ID: ', bg='white')
- global id_txt
- id_txt = Entry(frame2, width=20, relief=relief_, bg='white')
- btn_paste = Button(frame2, text='Paste', width=8, relief=relief_, bg='white', command=lambda: paste(id_txt), bd=0)
- global scan_btn
- scan_btn = Button(frame2, text='Start scanning', width=32, relief=relief_, bg='white', bd=1, command=lambda: _thread.start_new_thread(start_scan, (selectgame.get(), source.get(), id_txt.get())))
- source_friend.select()
- frame2.place(x=10, y=10)
- whatscan.place(x=0, y=0)
- selectgame_rbtn_dota.place(x=50, y=0)
- selectgame_rbtn_cs.place(x=100, y=0)
- selectgame_rbtn_pubg.place(x=145, y=0)
- source_lbl.place(x=0, y=20)
- source_group.place(x=50, y=20)
- source_friend.place(x=150, y=20)
- id_lbl.place(x=0, y=40)
- id_txt.place(x=50, y=42)
- btn_paste.place(x=177, y=40)
- scan_btn.place(x=0, y=70)
- global progress_bar
- global progbar_proc
- progbar_proc = IntVar()
- progress_bar = Progressbar(root, orient='horizontal', mode='determinate', length=250, variable=progbar_proc)
- progress_bar.place(x=10, y=120)
- global frame3
- frame3 = Frame(root, bd=5, width=250, height=240, highlightbackground='black', highlightthickness=1, bg='white')
- frame3.place(x=10,y=150)
- global add_btn
- global open_btn
- frame4 = Frame(root, bd=5, width=250, height=35, highlightbackground='black', highlightthickness=1, bg='white')
- add_btn = Button(frame4, text='Add selected', width=15, relief=relief_, bg='white', bd=1, command=lambda: table_.add_selected())
- open_btn = Button(frame4, text='Open in browser', width=15, relief=relief_, bg='white', bd=1, command=lambda: table_.open_browser())
- global table_
- header_ = ['Steam id', 'Value', 'Hours', 'Level']
- table_ = McListBox(header_)
- frame4.place(x=10, y=400)
- add_btn.place(x=0, y=0)
- open_btn.place(x=125, y=0)
- frame_proxy = Frame(root, bd=5, width=250, height=35, highlightbackground='black', highlightthickness=1, bg='white')
- frame_proxy.place(x=10, y=445)
- global use_proxy
- use_proxy = IntVar()
- use_proxy_btn = Checkbutton(frame_proxy, text='Use proxy', variable=use_proxy, onvalue=1, offvalue=0, bg='white')
- add_proxy_btn = Button(frame_proxy, text='Add proxy', width=21, relief=relief_, bg='white', bd=1, command=lambda: AddProxyWindow())
- add_proxy_btn.place(x=83, y=0)
- use_proxy_btn.place(x=0, y=0)
- frame_settings = Frame(root, bd=5, width=250, height=90, highlightbackground='black', highlightthickness=1, bg='white')
- frame_settings.place(x=10, y=490)
- global parse_hours
- parse_hours = IntVar()
- parse_hours_btn = Checkbutton(frame_settings, text='Get hours', variable=parse_hours, onvalue=1, offvalue=0, bg='white')
- global parse_lvl
- parse_lvl = IntVar()
- parse_lvl_btn = Checkbutton(frame_settings, text='Get lvl', variable=parse_lvl, onvalue=1, offvalue=0, bg='white')
- parse_hours_btn.place(x=0,y=0)
- parse_lvl_btn.place(x=80,y=0)
- steamapi_lbl = Label(frame_settings, text='Steam API Key:', bg='white')
- steamapi_lbl.place(x=150,y=2)
- global steamapi_entry
- steamapi_entry = Entry(frame_settings, width=30, relief=relief_, bg='white')
- steamapi_entry.place(x=0, y=27)
- btn_paste = Button(frame_settings, text='Paste', width=7, relief=relief_, bg='white', command=lambda: paste(steamapi_entry), bd=0)
- btn_paste.place(x=185, y=25)
- btn_submit = Button(frame_settings, text='Submit', width=33, relief=relief_, bg='white', command=save_apikey, bd=1)
- btn_submit.place(x=0, y=52)
- try:
- f_api = open('api.txt', 'r')
- global apikey
- api = f_api.read()
- steamapi_entry.insert(0, api)
- apikey = api
- except: pass
- def paste(ent):
- OpenClipboard()
- data = GetClipboardData()
- ent.delete(0, END)
- ent.insert(0, data)
- CloseClipboard()
- def save_apikey():
- global apikey
- apikey = steamapi_entry.get()
- try:
- f = open('api.txt', 'r')
- except:
- f = open('api.txt', 'w+')
- f.write(apikey)
- root.config(relief=relief_, bg='white')
- # ~~~~~~~~~~~~~~~~~ LOGIN ~~~~~~~~~~~~~~~~~~
- lg = 0
- try:
- file = open('login.txt', 'r').read().split('\n')
- password = file[1]
- login = file[0]
- url = r'http://mailf.tk/check.php?login=' + login + '&password=' + password
- result = urlopen(url).read().decode('utf-8')
- if result == '1':
- lg = 1
- except: pass
- # /*/~~~~~~~~~~~~~~~~~ LOGIN ~~~~~~~~~~~~~~~~~~/*/
- if lg == 0:
- frame1 = Frame(root, bd=5, width=200, height=105, highlightbackground='black', highlightthickness=1, bg='white')
- login_l = Label(frame1, text='Login: ', bg='white')
- login_ = StringVar()
- password_ = StringVar()
- login_txt = Entry(frame1, relief=relief_, textvariable=login_)
- password_l = Label(frame1, text='Password: ', bg='white')
- password_txt = Entry(frame1, show='•', relief=relief_, textvariable=password_)
- save_pass = IntVar()
- save_pass_btn = Checkbutton(frame1, text='Remember me', variable=save_pass, onvalue=1, offvalue=0, bg='white')
- login_btn = Button(frame1, text='Login', width=14, relief=relief_, highlightthickness=1, bd=1, bg='white',
- command=lambda: log_in(login_.get(), password_.get(), save_pass.get(), 0))
- result_label = Label(frame1, text='', width=8, height=1, fg='red', bg='white')
- frame1.place(x=10, y=10)
- login_l.place(x=0, y=0)
- login_txt.place(x=60, y=0)
- password_l.place(x=0, y=25)
- password_txt.place(x=60, y=25)
- save_pass_btn.place(x=0, y=45)
- login_btn.place(x=0, y=70)
- result_label.place(x=115, y=70)
- elif lg == 1:
- programm()
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement