def __init__(self, master, controller): Base.__init__(self, master, controller) self._bidding = False self._bidCycle = 0 self._errorCount = 0 self._banWait = 0 self._startTime = 0 self._lastUpdate = 0 self._updatedItems = [] self.auctionsWon = 0 self.sold = 0 self.q = mp.Queue() self.p = None self.rpm = tk.StringVar() self.minCredits = tk.StringVar() self.maxPlayer = tk.StringVar() self.autoUpdate = tk.IntVar() self.buy = tk.StringVar() self.sell = tk.StringVar() self.bin = tk.StringVar() self.snipeOnly = tk.IntVar() self.relistAll = tk.IntVar() self.settings = { 'rpm': 20, 'minCredits': 1000, 'maxPlayer': 20, 'autoUpdate': 0, 'buy': 0.9, 'sell': 1, 'bin': 1.25, 'snipeOnly': 0, 'relistAll': 1 } # Search for settings try: with open(constants.SETTINGS_FILE, 'r') as f: self.settings.update(json.load(f)) except: pass # Set initial values self.rpm.set(self.settings['rpm']) self.minCredits.set(self.settings['minCredits']) self.maxPlayer.set(self.settings['maxPlayer']) self.autoUpdate.set(self.settings['autoUpdate']) self.buy.set(int(self.settings['buy']*100)) self.sell.set(int(self.settings['sell']*100)) self.bin.set(int(self.settings['bin']*100)) self.snipeOnly.set(self.settings['snipeOnly']) self.relistAll.set(self.settings['relistAll']) # Setup traces self.rpm.trace('w', self.save_settings) self.minCredits.trace('w', self.save_settings) self.maxPlayer.trace('w', self.save_settings) self.autoUpdate.trace('w', self.save_settings) self.buy.trace('w', self.save_settings) self.sell.trace('w', self.save_settings) self.bin.trace('w', self.save_settings) self.snipeOnly.trace('w', self.save_settings) self.relistAll.trace('w', self.save_settings) # Setup GUI options = tk.Frame(self) options.grid(column=0, row=0, sticky='ns') auctions = tk.Frame(self) self.auctionStatus = Auctions(auctions) self.auctionStatus.get_view().grid(column=0, row=0, sticky='nsew') self.logView = tk.Text(auctions, bg='#1d93ab', fg='#ffeb7e', bd=0) self.logView.grid(column=0, row=1, sticky='nsew') auctions.grid(column=1, row=0, sticky='nsew') auctions.grid_rowconfigure(0, weight=3) auctions.grid_rowconfigure(1, weight=1) auctions.grid_columnconfigure(0, weight=1) self.grid_rowconfigure(0, weight=1) self.grid_columnconfigure(0, weight=0) self.grid_columnconfigure(1, weight=1) back = tk.Button(options, bg='#1d93ab', text='Back to Player Search', command=self.playersearch) back.grid(column=0, row=0, sticky='we') self.tree = ttk.Treeview(options, columns=('buy', 'sell', 'bin', 'won'), selectmode='browse') self.tree.heading('#0', text='Name', anchor='w') self.tree.column('buy', width=50, anchor='center') self.tree.heading('buy', text='Max Bid') self.tree.column('sell', width=50, anchor='center') self.tree.heading('sell', text='Sell') self.tree.column('bin', width=50, anchor='center') self.tree.heading('bin', text='BIN') self.tree.column('won', width=50, anchor='center') self.tree.heading('won', text='# Won') self.tree.grid(column=0, row=1, sticky='ns') form = tk.Frame(options, padx=15, pady=15) form.grid(column=0, row=2) options.grid_columnconfigure(0, weight=1) options.grid_rowconfigure(0, weight=0) options.grid_rowconfigure(1, weight=1) options.grid_rowconfigure(2, weight=0) settingsLbl = tk.Label(form, text='Settings', font=('KnulBold', 16)) settingsLbl.grid(column=0, row=0, columnspan=2) rpmLbl = tk.Label(form, text='RPM:') rpmLbl.grid(column=0, row=1, sticky='e') rpmEntry = tk.Entry(form, width=8, textvariable=self.rpm) rpmEntry.grid(column=1, row=1, sticky='w') minCreditsLbl = tk.Label(form, text='Min $:') minCreditsLbl.grid(column=0, row=2, sticky='e') minCreditsEntry = tk.Entry(form, width=8, textvariable=self.minCredits) minCreditsEntry.grid(column=1, row=2, sticky='w') maxPlayerLbl = tk.Label(form, text='Max Cards:') maxPlayerLbl.grid(column=0, row=3, sticky='e') maxPlayerEntry = tk.Entry(form, width=8, textvariable=self.maxPlayer) maxPlayerEntry.grid(column=1, row=3, sticky='w') snipeOnlyLbl = tk.Label(form, text='BIN Snipe:') snipeOnlyLbl.grid(column=0, row=4, sticky='e') snipeOnlyCheckbox = tk.Checkbutton(form, variable=self.snipeOnly) snipeOnlyCheckbox.grid(column=1, row=4, sticky='w') pricingLbl = tk.Label(form, text='Pricing', font=('KnulBold', 16)) pricingLbl.grid(column=2, row=0, columnspan=2) autoUpdateLbl = tk.Label(form, text='Auto Update:') autoUpdateLbl.grid(column=2, row=1, sticky='e') autoUpdateCheckbox = tk.Checkbutton(form, variable=self.autoUpdate) autoUpdateCheckbox.grid(column=3, row=1, sticky='w') autoBuyLbl = tk.Label(form, text='Auto Bid %:') autoBuyLbl.grid(column=2, row=2, sticky='e') autoBuyEntry = tk.Entry(form, width=4, textvariable=self.buy) autoBuyEntry.grid(column=3, row=2, sticky='w') autoSellLbl = tk.Label(form, text='Auto Sell %:') autoSellLbl.grid(column=2, row=3, sticky='e') autoSellEntry = tk.Entry(form, width=4, textvariable=self.sell) autoSellEntry.grid(column=3, row=3, sticky='w') autoBINLbl = tk.Label(form, text='Auto BIN %:') autoBINLbl.grid(column=2, row=4, sticky='e') autoBINEntry = tk.Entry(form, width=4, textvariable=self.bin) autoBINEntry.grid(column=3, row=4, sticky='w') relistAllLbl = tk.Label(form, text='Same Relist $:') relistAllLbl.grid(column=2, row=5, sticky='e') relistAllCheckbox = tk.Checkbutton(form, variable=self.relistAll) relistAllCheckbox.grid(column=3, row=5, sticky='w') self.bidbtn = tk.Button(form, text='Start Bidding', command=self.start) self.bidbtn.grid(column=0, row=6, columnspan=4, padx=5, pady=5) self.checkQueue() self.clearErrors()