При переключении вкладок с помощью wxpython появляются странные черные квадраты

Я использую wxpython для создания графического интерфейса.

Идея состоит в том, что всякий раз, когда я выбираю строку, что-то происходит на ноутбуке 1 и ноутбуке 2, и появляются разные вкладки с различной связанной информацией.

Однако, когда я связываю событие при выборе строки, на заголовках вкладок появляются странные странные черные квадраты. В чем дело?

import wx
import threading
from time import sleep

class VAR():
    def __init__(self):
        self.result_row = ''
var = VAR()

class TabOne(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent)
        t = wx.StaticText(self, -1, "This is the first tab", (20, 20))

class TabTwo(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent)
        t = wx.StaticText(self, -1, "This is the second tab", (20, 20))

class GUI(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, size=(1000, 1000), style=wx.DEFAULT_FRAME_STYLE &
                        ~wx.MAXIMIZE_BOX ^ wx.RESIZE_BORDER, pos=(100, 0))
        self.panel = wx.Panel(self)
        self.hsizer = wx.BoxSizer(wx.VERTICAL)
        first_panel = wx.Panel(self.panel, size=(1000, 420))
        self.hsizer.Add(first_panel, 1)
        self.second_panel = wx.Panel(self.panel, size=(1000, 600))
        self.notebook1 = wx.Notebook(self.second_panel, size=(1000, 230))
        self.notebook2 = wx.Notebook(self.second_panel, size=(1000, 400))
        self.hsizer.Add(self.second_panel, 1)
        self.second_panel_sizer = wx.BoxSizer(wx.VERTICAL)
        self.second_panel_sizer.Add(self.notebook1, 1, wx.EXPAND)
        self.second_panel_sizer.Add(self.notebook2, 2, wx.EXPAND)

        self.second_panel.SetSizerAndFit(self.second_panel_sizer)
        self.panel.SetSizerAndFit(self.hsizer)

        var.result_row = wx.ListCtrl(
            first_panel, -1, style=wx.LC_REPORT, size=(980, 245), pos=(0, 175))

        var.result_row.InsertColumn(0, "No.")
        var.result_row.InsertColumn(1, "2 ")

        self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.SelectRow, var.result_row)

    def SelectRow(self, event):

        while (self.notebook1.GetPageCount()):
            self.notebook1.DeletePage(0)
        while (self.notebook2.GetPageCount()):
            self.notebook2.DeletePage(0)
        tab1 = TabOne(self.notebook1)
        self.notebook1.AddPage(tab1, "Tab 1")
        sizer = wx.BoxSizer()
        sizer.Add(self.notebook1, 1, wx.EXPAND)
        self.second_panel.SetSizer(sizer)
        tab2 = TabTwo(self.notebook2)
        self.notebook2.AddPage(tab2, "Tab 2")
        sizer = wx.BoxSizer()
        sizer.Add(self.notebook2, 1, wx.EXPAND)
        self.second_panel.SetSizer(sizer)

def InfiniteProcess():
    for i in range(100):
        sleep(0.1)
        var.result_row.Append(str(i))

finish = False
a = threading.Thread(target=InfiniteProcess)
a.setDaemon(1)
a.start()
app = wx.App()
frame = GUI(None, -1, "a")
frame.Show()
app.MainLoop()

образец

0 ответов

Другие вопросы по тегам