我是一个快乐的django开发人员,现在想要构建一个小型的python桌面应用程序。我决定使用wxpython作为我的gui工具包。
现在开始混乱。我该如何组织我的代码?有没有简单的起点计划?有关数据库交互的小型wxpython应用程序的真实世界代码的指针吗?
答案 0 :(得分:3)
这是我开始使用新wxPython项目的最佳方式:http://www.oneminutepython.com/
它也开始以一种很好的方式为你编写代码。
答案 1 :(得分:0)
我坚持“我写的东西,我得到的”规则。所以我通常从其中一个开始:
1)使用面板的默认Frame sizer:
import wx
class MainWindow(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
self.panel = wx.Panel(self)
self.button = wx.Button(self.panel, label="Test")
self.sizer = wx.BoxSizer()
self.sizer.Add(self.button)
self.panel.SetSizerAndFit(self.sizer)
self.Show()
app = wx.App(False)
win = MainWindow(None)
app.MainLoop()
2)使用面板中的默认Frame sizer和内部的所有内容:
import wx
class MainWindow(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
self.panel = wx.Panel(self)
self.button = wx.Button(self.panel, label="Test")
self.sizer = wx.BoxSizer()
self.sizer.Add(self.button)
self.border = wx.BoxSizer()
self.border.Add(self.sizer, 1, wx.ALL | wx.EXPAND, 5)
self.panel.SetSizerAndFit(self.border)
self.Show()
app = wx.App(False)
win = MainWindow(None)
app.MainLoop()
3)为面板使用自定义Frame sizer,我可以控制它,例如在需要时调用它“Fit”和“Layout”:
import wx
class MainWindow(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
self.panel = wx.Panel(self)
self.button = wx.Button(self.panel, label="Test")
self.windowSizer = wx.BoxSizer()
self.windowSizer.Add(self.panel, 1, wx.ALL | wx.EXPAND)
self.sizer = wx.BoxSizer()
self.sizer.Add(self.button)
self.border = wx.BoxSizer()
self.border.Add(self.sizer, 1, wx.ALL | wx.EXPAND, 5)
self.panel.SetSizerAndFit(self.border)
self.SetSizerAndFit(self.windowSizer)
self.Show()
app = wx.App(False)
win1 = MainWindow(None)
app.MainLoop()
这是我的出发点。然后我只需添加其他原始小部件并为它们绑定事件。如果我需要一个新面板,我通常将它放在一个新模块中并派生Panel类。对于必须从原始小部件派生的特殊小部件,我也这样做 - 比如绘图面板,OpenGL画布,特殊情况按钮等。
将功能与GUI分开通常也是个好主意。所以我首先按照不需要GUI的方式编写功能。