Как извлечь кадр данных из отредактированной таблицы в графическом интерфейсе?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как извлечь кадр данных из отредактированной таблицы в графическом интерфейсе?

Сообщение Anonymous »


Изображение

Какую стратегию мне следует использовать, чтобы графический интерфейс, который выбирает набор данных (API Get), сохраняя его во фрейме, и позволяет редактировать фрейм данных для обновления API (патч API)? Изначально я создал графический интерфейс и функции отдельными. Все работало, но мне не удалось зафиксировать изменения в фрейме данных, если кто-то отредактировал фрейм данных в таблице.
Коллега предложил мне создать класс для фиксации состояния фрейма данных. dataframe.
  • создайте класс для графического интерфейса.
    a. создать холст.
    б. создайте рамку внутри холста для пандастабильной таблицы.
  • В графическом интерфейсе есть метки и кнопки для фильтрации запроса API Get.
    а. метки/текстовые поля для фильтров «Проект» и «Имя».
    b. кнопку, чтобы выбрать, какой запрос API Get выполнить.
Я начинаю путаться.
Должен ли кнопку, чтобы выбрать набор данных: команду функции или метод класса?

Код: Выделить всё

import tkinter as tk
from tkinter import *
import pandas as pd
from pandastable import Table, TableModel, config
from drofus import Projects, Items #, RoomTemplates, Items, Rooms

WINDOW_WIDTH = 940
WINDOW_HEIGHT = 500
HEADER_HEIGHT = round(WINDOW_HEIGHT/15, 0)
HEADER_FONT = int(round(WINDOW_HEIGHT/20, 0))
BUTTON_WIDTH = 20

PROJECT = 'Projects'
ITEM = "Items"

def get_project(filter: str) -> pd.DataFrame:
module = Projects()

# dRofus API request
projects = module.filter(filter_api=filter)
with pd.option_context("future.no_silent_downcasting", True):
projects.infer_objects(copy=False).drop(projects.iloc[:, 10:19], inplace=True, axis=1)
projects_revised = projects.rename(columns={'Template Name':'Project'})
return projects_revised

def get_item():
pass

class Drofus(Frame):
"""Basic test frame for the table"""

def __init__(self, parent=None):
self.parent = parent
Frame.__init__(self)
self.main = self.master
self.main.geometry(f"{WINDOW_WIDTH}x{WINDOW_HEIGHT}")
self.main.title('Design Standards Database')
self.canvas = Canvas(self.main,
width=WINDOW_WIDTH,
height=WINDOW_HEIGHT,
background='white',
borderwidth=0,
highlightthickness=0)
header_id = self.canvas.create_text(WINDOW_WIDTH / 2, HEADER_HEIGHT, text="Welcome",
font=("Arial", HEADER_FONT, "normal"), fill="dimgrey", anchor='s')
self.canvas.grid(row=0, column=0, columnspan=4)
table_frame = Frame(self.main, highlightthickness=5, highlightcolor="orange")
table_frame.grid(row=0, column=0, padx=40, pady=40)

df = get_project(filter="None")
self.table = pt = Table(table_frame,
dataframe=df,
showtoolbar=False,
showstatusbar=True)
pt.show()

proj_filter_label = Label(table_frame, text="Project filter")
proj_filter_label.grid(row=4, column=1, sticky="e")
name_filter_label = Label(table_frame, text="Name filter")
name_filter_label.grid(row=5, column=1, sticky="e")

proj_filter_textbox = Entry(table_frame)
proj_filter_textbox.grid(row=4, column=2, sticky="w")
name_filter_textbox = Entry(table_frame)
name_filter_textbox.grid(row=5, column=2, sticky="w")

module_options = [PROJECT, ITEM]
module_variable = StringVar(value=module_options[0])
module_variable.set("dRofus Module")

module_dropdown = OptionMenu(table_frame, module_variable, *module_options, command=select_dataset)
module_dropdown.config(width=BUTTON_WIDTH)
module_dropdown.grid(row=5, column=3, sticky="w")
return

def select_dataset(event):
selected = module_variable.get()

if select == PROJECT:
if proj_filter_textbox.get():
module_filter = proj_filter_textbox.get()
else:
module_filter = name_filter_textbox.get()

get_project(filter=module_filter)

else:
module_filter = name_filter_textbox.get()
get_item()

def main():
drofus_df = Drofus()
drofus_df.mainloop()

if __name__ == "__main__":
main()


Пожалуйста, дайте несколько советов о том, следует ли мне продолжать использовать Класс и стоит ли кнопка «Модуль dRofus» должна быть функцией или методом класса.
Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/791 ... e-in-a-gui
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Pandas: как преобразовать кадр данных M*N в кадр данных (M*N)*1
    Anonymous » » в форуме Python
    0 Ответы
    88 Просмотры
    Последнее сообщение Anonymous
  • Запись отредактированной коллекции в серверную часть (ядро ASP.NET MVC)
    Anonymous » » в форуме C#
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • DENCLEDIT не сосредоточен на отредактированной ячейке в DataGridView C#
    Anonymous » » в форуме C#
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Как я могу ускорить рекурсию в графическом интерфейсе Minesweeper?
    Гость » » в форуме JAVA
    0 Ответы
    52 Просмотры
    Последнее сообщение Гость
  • (JButton) размер кнопки в новом окне в графическом интерфейсе JAVA
    Гость » » в форуме JAVA
    0 Ответы
    49 Просмотры
    Последнее сообщение Гость

Вернуться в «Python»