首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >推荐的python桌面开发结构

推荐的python桌面开发结构
EN

Stack Overflow用户
提问于 2011-04-22 01:54:58
回答 2查看 1.4K关注 0票数 0

我是一个快乐的django开发人员,现在想要建立一个小的python桌面应用程序。我决定使用wxpython作为我的图形用户界面工具包。

现在开始混淆了。我应该如何组织我的代码?有什么简单的起点方案吗?有什么关于小型wxpython应用程序与数据库交互的真实代码的提示吗?

EN

回答 2

Stack Overflow用户

发布于 2011-04-22 02:14:58

这是我最喜欢的开始新wxPython项目的方法:http://www.oneminutepython.com/

它还开始以一种很好的方式为您布置代码。

票数 3
EN

Stack Overflow用户

发布于 2011-04-22 18:04:34

我坚持“我写什么,我就得到什么”的原则。因此,我通常从其中之一开始:

1)对面板使用默认的帧大小:

代码语言:javascript
复制
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)对面板使用默认的帧大小,对内部的所有内容使用边框:

代码语言:javascript
复制
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)为面板使用自定义的边框大小,这样我就可以控制它,例如在需要的时候调用"Fit“和"Layout”:

代码语言:javascript
复制
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的方式编写功能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5747907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档