From eff36bd9e0a80c04bb2a2f45607a002e84988dd7 Mon Sep 17 00:00:00 2001 From: Oliver Hartmann Date: Tue, 3 Jan 2023 01:42:46 +0100 Subject: [PATCH] fixed layout --- src/gui.py | 52 ++++++++++++++++++++++++++++------------------------ 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/src/gui.py b/src/gui.py index e03753c..41e95f6 100644 --- a/src/gui.py +++ b/src/gui.py @@ -5,18 +5,20 @@ from .data import Message from src import sendkeys from typing import Callable from src.data import log +import sv_ttk class Gui(Tk): def __init__(self, parent=None) -> None: Tk.__init__(self, parent) + sv_ttk.set_theme("dark") self.title("Uber Trader") # self.geometry("300x200+10+20") self.overrideredirect(1) # remove border self.wm_withdraw() # Hide window self.attributes('-topmost', True) # always on top - style = ttk.Style() - style.configure("BW.TLabel", foreground="white", background="black") + # style = ttk.Style() + # style.configure("BW.TLabel", foreground="white", background="black") self.tab_control = ttk.Notebook(self, style='BW.TLabel') self.tab_control.pack(expand=1, fill='both') self.tab_control.bind("", self.start_move) @@ -27,29 +29,28 @@ class Gui(Tk): def add_tab(self, number: int, message: Message) -> None: self.wm_deiconify() if message.user not in self.tabs: - self.tabs[message.user] = {'tab': ttk.Frame(self.tab_control, style='BW.TLabel')} - tab = self.tabs[message.user]['tab'] + self.tabs[message.user] = {'frame': ttk.Frame(self.tab_control)} + self.tabs[message.user]['items'] = {} + frame = self.tabs[message.user]['frame'] if message.trade is not None: - if message.trade.item not in self.tabs[message.user]: - self.tabs[message.user][message.trade.item] = (tab, message) - ttk.Label(tab, text=message.trade.item, style='BW.TLabel').pack(anchor='e', side='left') - Label(tab, text=f'{message.trade.amount} {message.trade.currency}').pack(anchor='e', side='left') - self.add_button(tab=tab, text='Inv', callback=self.inv_callback, message=message) - self.add_button(tab=tab, text='Trade', callback=self.trade_callback, message=message) - self.add_button(tab=tab, text='Ty', callback=self.ty_callback, message=message) - self.add_button(tab=tab, text='Wait', callback=self.wait_callback, message=message) - self.add_button(tab=tab, text='X', callback=self.destroy_tab, message=message) - # Button(tab, text='Inv', command=lambda mess=message: self.inv_callback(message, tab)).pack(anchor='e', side='left') - # Button(tab, text='Trade', command=lambda mess=message: self.trade_callback(message, tab)).pack(anchor='e', side='left') - # Button(tab, text='Ty', command=lambda mess=message: self.ty_callback(message, tab)).pack(anchor='e', side='left') - # Button(tab, text='Wait', command=lambda mess=message: self.wait_callback(message, tab)).pack(anchor='e', side='left') - # Button(tab, text='X', command=lambda mess=message: self.destroy_tab(message, tab)).pack(anchor='e', side='left') - self.tab_control.add(tab, text=message.user) + if message.trade.item not in self.tabs[message.user]['items']: + row = len(self.tabs[message.user]['items']) + self.tabs[message.user]['items'][message.trade.item] = {} + self.tabs[message.user]['items'][message.trade.item]['row'] = row + self.tabs[message.user]['items'][message.trade.item]['message'] = message + ttk.Label(frame, text=message.trade.item).grid(column=0, row=row) + Label(frame, text=f'{message.trade.amount} {message.trade.currency}').grid(column=1, row=row) + self.add_button(tab=frame, text='Inv', callback=self.inv_callback, message=message).grid(column=2, row=row) + self.add_button(tab=frame, text='Trade', callback=self.trade_callback, message=message).grid(column=3, row=row) + self.add_button(tab=frame, text='Ty', callback=self.ty_callback, message=message).grid(column=4, row=row) + self.add_button(tab=frame, text='Wait', callback=self.wait_callback, message=message).grid(column=5, row=row) + self.add_button(tab=frame, text='X', callback=self.destroy_tab, message=message).grid(column=6, row=row) + self.tab_control.add(frame, text=message.user) else: log.warning(f'Trade in message "{str(message)}" is None') - def add_button(self, tab: ttk.Frame, text: str, callback: Callable, message: Message) -> None: - Button(tab, text=text, command=lambda: callback(message, tab)).pack(anchor='e', side='left') + def add_button(self, tab: ttk.Frame, text: str, callback: Callable, message: Message) -> Button: + return Button(tab, text=text, command=lambda: callback(message, tab)) def start_move(self, event): self.x = event.x @@ -83,10 +84,13 @@ class Gui(Tk): def destroy_tab(self, message: Message, tab: ttk.Frame) -> None: if message.user in self.tabs: - if message.trade.item in self.tabs[message.user]: + if message.trade.item in self.tabs[message.user]['items']: # Delete the item - del self.tabs[message.user][message.trade.item] - if len(self.tabs[message.user]) == 1: + row = self.tabs[message.user]['items'][message.trade.item]['row'] + for widget in self.tabs[message.user]['frame'].grid_slaves(row=row): + widget.destroy() + del self.tabs[message.user]['items'][message.trade.item] + if len(self.tabs[message.user]['items']) == 0: # If no item from this user is left, then also delete the tab del self.tabs[message.user] tab.destroy()