1
import wx
import sqlite3
class Frame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None)
self.mainPanel = wx.Panel(self)
self.data = ['111111','2222','333','4','555']
self.testcombo = wx.ComboBox(self.mainPanel,-1, choices=self.data, pos=(0,0))
# self.testcombo.Bind(wx.EVT_COMBOBOX, self.comboSave)
self.dataLabel = wx.StaticText(self.mainPanel,-1,("Nothing Saved Yet"),pos=(100,50))
self.dataLabel2 = wx.StaticText(self.mainPanel,-1, pos=(100,100))
self.testbut = wx.Button(self.mainPanel, wx.ID_SAVE, pos=(0,180))
self.testbut.Bind(wx.EVT_BUTTON, self.dataSave, id=wx.ID_SAVE)
self.conn = sqlite3.connect("test1.db")
self.cursor = self.conn.cursor()
self.cursor.execute('CREATE TABLE IF NOT EXISTS TEST(TEST CHAR(5))')
self.autorefresh()
# def comboSave(self, e):
# self.testcomboSave = self.testcombo.GetValue()
def dataSave(self, e):
self.testcomboSave = self.testcombo.GetValue()
self.cursor.execute('INSERT INTO TEST(TEST) VALUES(?)', (self.testcomboSave,))
self.conn.commit()
self.dataLabel.SetLabel(self.testcomboSave)
def comboLoad(self):
self.cursor.execute('SELECT *FROM TEST')
for dbLoad in self.cursor.fetchall():pass
self.dbLoad = dbLoad[0]
self.dataLabel2.SetLabel(self.dbLoad)
def autorefresh(self):
self.comboLoad()
wx.CallLater(1000, self.autorefresh)
if __name__ == '__main__':
app = wx.App()
frame = Frame()
frame.Show()
app.MainLoop()
コンボボックスの内容をsqilte3にロードしてパネルに自動的にロードすると、テキストに残像があります。何故かはわからない。これはバグですか?Wxpythonパネルは、読み込んだとき自動的にテキストイメージを残します
EX)111111 - > 2222
私が望むのはデータベースのデータをリストするのではなく、変更するたびにコンボボックスの内容を変更したいのです。私はこれを解決する方法をあなたに尋ねたいと思います。 Ex1)コンボ11111選択 - >パネルテキスト11111 Ex2)コンボ4選択 - >パネルテキスト41111(11111 < - 残像???バグ?) –
私は今考えているものを提供するコードを変更しました。頼んでいる。 –
私はコードを変更しています。 "Self.dataLabel2.SetLabel(self.dbLoad)"部分に適用されています。ありがとうございました。本当に良い教訓でした。私は多くのことを学びました。 –