Как изменить ячейки сетки из класса Frame? - PullRequest
0 голосов
/ 25 мая 2019

Я пытаюсь сбросить таблицу сетки в исходное состояние после внесения в нее некоторых изменений (добавлены некоторые тексты и изменен фон). Моей первой мыслью было сделать ForceRefresh (), но это не сработало. После этого я подумал, что мне просто нужно установить фоновый цвет белым, а SetCellValue - пустым, чтобы имитировать обновление, но это тоже не сработало.

Когда я использую:

self.SetCellBackgroundColour(0, 16, "#ffffff")

Я получил эту ошибку:

AttributeError: 'TestFrame' object has no attribute 'SetCellBackgroundColour'

Моя главная проблема - как что-то изменить в моей сетке из класса Frame. Я уверен, что я не делаю это правильно, поэтому мой вопрос здесь.

Буду признателен, если кто-нибудь поможет мне решить мою проблему.

Вот часть моего кода, которая проблематична (см. Последнее определение):

import wx
import wx.grid as gridlib

class SimpleGrid(gridlib.Grid): ##, mixins.GridAutoEditMixin):
    def __init__(self, parent, log):
        gridlib.Grid.__init__(self, parent, -1)

        [... Some Code to Create the grid]

class TestFrame(wx.Frame):
    def __init__(self, parent, log):
        wx.Frame.__init__(self, parent, 0, "Native Ads Reports V1.0", size=(1400,800))
        self.grid = SimpleGrid(self, log)

        # Create a status-Bar
        status = self.CreateStatusBar()

        # Create menu & Items
        menubar = wx.MenuBar()
        first = wx.Menu()
        applyItem = first.Append(wx.ID_ANY, "Apply Changes", "This apply all changes to the campaigns" )
        resetItem = first.Append(wx.ID_ANY, "Reset Changes", "This Reset all changes to the campaigns" )
        menubar.Append(first, "Action")
        self.SetMenuBar(menubar)

        # Associate a handler function with the EVT_MENU
        self.Bind(wx.EVT_MENU, self.OnApply, applyItem)
        self.Bind(wx.EVT_MENU, self.OnReset, resetItem)

    def OnApply(self, event):
            """Apply all changes"""
            dlg = wx.MessageDialog(None, "Do you want to apply changes?",'Updater',wx.YES_NO | wx.ICON_QUESTION)
            result = dlg.ShowModal()
            if result == wx.ID_YES:
                self.count()
                from changeBid import changeBid
                changeBidTbBulk()

    #My problem is situated here. If the user clicks "Yes" in the dialog box the table should reset and all modifications should be deleted
    def OnReset(self, event):
            """Apply all changes"""
            dlg = wx.MessageDialog(None, "Do you want to reset all changes?",'Updater',wx.YES_NO | wx.ICON_QUESTION)
            result = dlg.ShowModal()
            if result == wx.ID_YES:
                db_conn.execute("DELETE FROM SandboxTB")
                db_conn.execute("DELETE FROM SandboxOB")
                db_conn.commit() 
                # Here I tried to change background
                self.SetCellBackgroundColour(0, 16, "#ffffff")
                #and here the refresh
                self.ForceRefresh()

Спасибо,

1 Ответ

0 голосов
/ 25 мая 2019

Я использовал self.grid.SetCellBackgroundColour, и он работал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...