Python桌面开发推荐结构
我是一名快乐的Django开发者,现在想做一个小的Python桌面应用程序。我决定使用wxpython作为我的图形界面工具包。
现在开始让我感到困惑的是,我该如何组织我的代码呢?有没有什么简单的入门方案?有没有人能给我一些关于小型wxpython应用程序与数据库交互的实际代码示例?
2 个回答
0
我遵循“我写什么,就得到什么”的原则。所以我通常会从以下几种方式开始:
1) 使用默认的框架大小调整器来设置面板:
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) 使用默认的框架大小调整器来设置面板,并为里面的所有东西加上边框:
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) 使用自定义的框架大小调整器来设置面板,这样我可以控制它,比如在需要的时候调用“适应”和“布局”:
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()
这就是我的起点。然后我会添加其他基本的控件,并为它们绑定事件。如果我需要一个新的面板,我通常会把它放在一个新的模块里,并从面板类派生出新的类。我对那些必须从基本控件派生的特殊控件也这样做,比如绘图面板、OpenGL画布、特殊按钮等等。
通常,把功能和图形界面分开也是个好主意。所以我会先编写功能代码,让它不依赖于图形界面。
3
这是我开始一个新的wxPython项目时最喜欢的方法:http://www.oneminutepython.com/
它还会帮你把代码整理得很好。