【发布时间】:2020-05-17 00:27:32
【问题描述】:
请问如何在选项卡中永久添加不同的小部件并永久保存它们
<html>
<pre>
import wx
tabs = []
with open('test.txt','r') as file:
for element in file.readlines():
tabs.append(element)
class TabPanel(wx.Panel):
def __init__(self, parent, pageNum):
self.parent = parent
self.pageNum = pageNum
wx.Panel.__init__(self, parent=parent)
class DemoFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY, "Notebook", size=(600,400))
panel = wx.Panel(self)
self.tab_num = len(tabs)
self.notebook = wx.Notebook(panel)
for tab in tabs:
name = "Page " + str(tab)
tab = TabPanel(self.notebook, 1)
self.notebook.AddPage(tab, name)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.notebook, 1, wx.ALL|wx.EXPAND, 5)
btn = wx.Button(panel, label="Add Page")
btn.Bind(wx.EVT_BUTTON, self.addPage)
sizer.Add(btn)
panel.SetSizer(sizer)
self.Layout()
self.Show()
def addPage(self, event):
self.tab_num += 1
new_tab = TabPanel(self.notebook, self.tab_num)
self.notebook.AddPage(new_tab, "Page %s" % self.tab_num)
tabs.append(self.tab_num)
print()
with open('test.txt','a+') as file:
file.write(str(self.tab_num))
file.write('\n')
if __name__ == "__main__":
app = wx.App(False)
frame = DemoFrame()
app.MainLoop()
</pre>
</html>
【问题讨论】:
-
add permanently是什么意思?您只需要创建控件并将它们添加到 sizer。查看 wxPython 下载链接上的不同示例。 -
单击添加页面时的注意事项。生成一个页面并将其存储在一个 txt 文件中,如果程序重新打开或重新加载,新选项卡仍然存在。如何将小部件添加到该标签页?当我关闭程序并再次打开时,所有信息仍然存在“小部件”
-
所以你想要的是第一次运行程序,点击按钮,然后在退出时保存布局。然后当程序再次启动时,此布局将恢复。我理解正确吗?
-
如果我的描述是真实的 - 在你的 wxFrame 派生类中创建一个函数来添加之前正在完成的笔记本页面或控件。然后当你启动程序时——调用这个函数。并且只需保存需要创建的控件/页面的数量。另一个思路是看
open source RAD tool,比如wxGlade或者wxFB或者其他的。 -
你明白了。我真的不知道该怎么做我找到了这段代码并做了一些修改,但我真的不知道如何继续如果你能写一个小例子,我将不胜感激。提前谢谢你。
标签: sqlite user-interface wxpython wxwidgets