引言
在房地产和室内设计行业中,准确收集客户需求是项目成功的关键。本文将详细解析一个基于wxPython开发的住宅需求调查问卷系统,该系统能够系统化地收集用户需求,并自动生成规范的需求文档。
C:\pythoncode\new\house_survey_app.py
一、项目架构概览
1.1 技术栈选择
import wx
import wx.lib.scrolledpanel as scrolled
- wxPython:成熟的Python GUI框架,跨平台支持
- ScrolledPanel:可滚动面板,解决内容过多时的显示问题
1.2 核心设计理念
本系统采用单窗口多控件的设计模式,通过字典统一管理所有输入控件,便于数据收集和维护。
二、主窗口类详解
2.1 类的初始化
class HouseSurveyFrame(wx.Frame):
def __init__(self):
super().__init__(parent=None, title='住宅需求调查问卷', size=(900, 700))
self.panel = scrolled.ScrolledPanel(self)
self.panel.SetupScrolling()
self.init_ui()
self.Centre()
关键点分析:
- 继承wx.Frame:Frame是wxPython中的顶级窗口类
- 窗口尺寸:900x700像素,经过测试适合大多数屏幕
- ScrolledPanel:允许用户通过滚动条查看所有内容
- SetupScrolling():自动配置滚动条行为
- Centre():窗口居中显示,提升用户体验
2.2 控件管理策略
self.controls = {
}
设计亮点:
使用字典存储所有控件的引用,带来三大优势:
- 便于访问:通过键名直接获取控件
- 易于维护:添加新控件只需在字典中注册
- 简化数据收集:遍历字典即可获取所有用户输入
三、UI构建核心方法
3.1 标题创建方法
def create_section_title(self, title):
text = wx.StaticText(self.panel, label=title)
font = wx.Font(12, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD)
text.SetFont(font)
text.SetForegroundColour(wx.Colour(0, 100, 200))
return text
设计细节:
- 字体大小:12号字,醒目但不过大
- 加粗处理:wx.FONTWEIGHT_BOLD增强视觉层次
- 颜色选择:蓝色(0, 100, 200)传达专业感
- 返回控件:便于添加到布局管理器
3.2 复选框创建方法
def add_checkbox(self, sizer, label):
cb = wx.CheckBox(self.panel, label=label)
sizer.Add(cb, 0, wx.ALL, 3)
return cb
使用场景:
- 是/否选择(如"有老人"、“有小孩”)
- 多选功能需求(如"书房"、“影音室”)
布局参数解析:
0:不拉伸控件wx.ALL:四周都添加边距3:边距为3像素
3.3 文本输入框创建方法
def add_text_input(self, sizer, label):
hsizer = wx.BoxSizer(wx.HORIZONTAL)
label_ctrl = wx.StaticText(self.panel, label=label, size=(200,

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



