Задать вопрос
@Fox1212

Почему форма не по центру экрана, как исправить?

Как разместить ее по центру экрана

def show_forex_market_form(self, entry=None, read_only=False):
        self.clear_frame()
        is_edit_mode = entry is not None

        
        main_frame = ttk.Frame(self.content_container, style='Card.TFrame')
        main_frame.pack(fill=tk.BOTH, expand=True, padx=20, pady=20)
        self.current_frame = main_frame

        
        container = ttk.Frame(main_frame, style="Card.TFrame")
        container.pack(pady=20, anchor="center", fill=tk.BOTH, expand=True)

        
        canvas = tk.Canvas(container, bg=DARK_BG)
        scrollbar = ttk.Scrollbar(container, orient="vertical", command=canvas.yview)
        scrollable_frame = ttk.Frame(canvas)

        scrollable_frame.bind("<Configure>", lambda e: canvas.configure(scrollregion=canvas.bbox("all")))
        canvas.create_window((0, 0), window=scrollable_frame, anchor="nw")
        canvas.configure(yscrollcommand=scrollbar.set, bg=DARK_BG)

        
        canvas.bind_all("<MouseWheel>", lambda event: canvas.yview_scroll(-1 if event.delta < 0 else 1, "units"))

        canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
        scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

       
        center_container = ttk.Frame(scrollable_frame)
        center_container.pack(anchor="center", pady=20)

        
        header = ttk.Label(center_container, text="БезнРУБ - Рынок", style='Header.TLabel', font=('Arial', 16, 'bold'))
        header.pack(pady=10)

        
        input_frame = ttk.LabelFrame(center_container, text="Основные параметры", style='Card.TFrame')
        input_frame.pack(fill=tk.X, pady=5, padx=10)

        grid_frame = ttk.Frame(input_frame, style='Card.TFrame')
        grid_frame.pack(padx=10, pady=5)

        
        fields = [
            ("Вид валюты:", 'forex_entry'),
            ("Сумма:", 'forex_amount_entry'),
            ("Общая комиссия (%):", 'forex_commission_entry'),
            ("Комиссия агента 1 (%):", 'forex_commission1_entry'),
            ("Комиссия агента 2 (%):", 'forex_commission2_entry'),
            ("Курс Инвестинг:", 'forex_course_entry')
        ]

        for i, (label_text, attr_name) in enumerate(fields):
            ttk.Label(grid_frame, text=label_text, style='CardTitle.TLabel').grid(row=i, column=0, sticky='e', padx=5,
                                                                                  pady=5)
            entry = ttk.Entry(grid_frame, font=('Arial', 12), width=25, state='normal' if not read_only else 'disabled')
            entry.grid(row=i, column=1, padx=5, pady=5)
            setattr(self, attr_name, entry)

       
        extra_comm_frame = ttk.Frame(center_container, style='Card.TFrame')
        extra_comm_frame.pack(fill=tk.X, pady=5, padx=10)

        self.forex_extra_var = tk.IntVar(value=2)
        ttk.Radiobutton(extra_comm_frame, text="Нет доп. комиссий", variable=self.forex_extra_var, value=2,
                        command=self.toggle_forex_extra_fields, style='TRadiobutton').pack(side=tk.LEFT, padx=10)
        ttk.Radiobutton(extra_comm_frame, text="Есть доп. комиссии", variable=self.forex_extra_var, value=1,
                        command=self.toggle_forex_extra_fields, style='TRadiobutton').pack(side=tk.LEFT, padx=10)

        
        self.forex_extra_frame = ttk.LabelFrame(center_container, text="Дополнительные комиссии", style='Card.TFrame')
        self.forex_extra_frame.pack(fill=tk.X, pady=5, padx=10)

        extra_fields = [
            ("Комиссия за пп (агент):", 'forex_agent_commission_entry'),
            ("Комиссия за пп (мы):", 'forex_our_commission_entry'),
            ("Курс для комиссий:", 'forex_commission_course_entry')
        ]

        for i, (label_text, attr_name) in enumerate(extra_fields):
            ttk.Label(self.forex_extra_frame, text=label_text, style='CardTitle.TLabel').grid(row=i, column=0,
                                                                                              sticky='e', padx=5,
                                                                                              pady=5)
            entry = ttk.Entry(self.forex_extra_frame, font=('Arial', 12), width=25, state='disabled')
            entry.grid(row=i, column=1, padx=5, pady=5)
            setattr(self, attr_name, entry)

        
        intermediaries_frame = ttk.LabelFrame(center_container, text="Посредники", style='Card.TFrame')
        intermediaries_frame.pack(fill=tk.X, pady=10, padx=10)

        select_frame = ttk.Frame(intermediaries_frame, style='Card.TFrame')
        select_frame.pack(fill=tk.X, padx=10, pady=5)

        ttk.Label(select_frame, text="Выберите посредника:", style='CardTitle.TLabel').pack(side=tk.LEFT, padx=5)

        self.intermediary_var = tk.StringVar()
        intermediaries = self.load_intermediaries()
        intermediary_names = [name for name, _ in intermediaries]

        self.intermediary_combobox = ttk.Combobox(select_frame, textvariable=self.intermediary_var,
                                                  values=intermediary_names, state="readonly", width=25)
        self.intermediary_combobox.pack(side=tk.LEFT, padx=5)

        ttk.Button(select_frame, text="Добавить", command=self.add_selected_intermediary,
                   state='normal' if not read_only else 'disabled').pack(side=tk.LEFT, padx=5)

        ttk.Button(intermediaries_frame, text="Создать нового посредника", command=self.add_intermediary,
                   state='normal' if not read_only else 'disabled').pack(pady=5)

        current_frame = ttk.LabelFrame(intermediaries_frame, text="Текущие посредники", style='Card.TFrame')
        current_frame.pack(fill=tk.X, padx=10, pady=5)

        self.current_intermediaries_frame = ttk.Frame(current_frame, style='Card.TFrame')
        self.current_intermediaries_frame.pack(padx=10, pady=5)

        self.update_intermediaries_display()

       
        btn_frame_calc = ttk.Frame(center_container, style='Card.TFrame')
        btn_frame_calc.pack(pady=15)
        self.forex_calc_btn = ttk.Button(btn_frame_calc, text="Рассчитать", command=self.calculate_forex_market,
                                         style='TButton', state='normal' if not read_only else 'disabled')
        self.forex_calc_btn.pack()

        
        result_frame = ttk.LabelFrame(center_container, text="Результаты расчета", style='Card.TFrame')
        result_frame.pack(fill=tk.BOTH, expand=True, pady=10, padx=10)
        self.forex_result_text = tk.Text(result_frame, height=15, font=('Arial', 11), wrap=tk.WORD, padx=10, pady=10,
                                         bg='white', fg='black')
        self.forex_result_text.pack(fill=tk.BOTH, expand=True, padx=5, pady=5)

        
        btn_footer_frame = ttk.Frame(main_frame, style='Card.TFrame')
        btn_footer_frame.pack(fill=tk.X, pady=10)

        footer_center = ttk.Frame(btn_footer_frame, style='Card.TFrame')
        footer_center.pack()

        if is_edit_mode:
            if not read_only:
                ttk.Button(footer_center, text="Сохранить изменения", command=lambda: self.save_forex_market(entry),
                           width=20).pack(side=tk.LEFT, padx=10)
            ttk.Button(footer_center, text="Назад в журнал", command=self.show_journal, width=20).pack(side=tk.LEFT,
                                                                                                       padx=10)
        else:
            ttk.Button(footer_center, text="Сохранить в журнал", command=self.save_forex_market, width=20).pack(
                side=tk.LEFT, padx=10)
            ttk.Button(footer_center, text="Назад", command=self.show_action_buttons, width=20).pack(side=tk.LEFT,
                                                                                                     padx=10)

        if is_edit_mode:
            self.load_forex_edit_data(entry)
  • Вопрос задан
  • 53 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы