wxPython实现自定义多行输入对话框

Ivy
Ivy
发布时间:2026-10-13| 5人浏览过
原创

本文介绍如何使用wxPython库创建一个自定义的图形用户界面输入对话框。通过继承wx.Dialog类,实现了支持多行文本输入及窗口大小调整的功能,适用于需要用户输入较多参数或详细信息的场景。

本文分享了利用wxPython构建图形用户界面(GUI)中输入对话框的具体实现代码,供读者参考学习。

在软件开发过程中,经常需要收集用户的输入参数,此时使用专门的输入对话框能显著提升交互体验:

#-*- coding:utf-8 -*-
#~ #--------------------------------------------------------------------------------
#~ FileName=wxinputbox.py
#~ Funciton:wx的输入对话框
#~ author:吴徐平
#~ Date:2013-04-28
#~ Email:539688300@qq.com
#~ #--------------------------------------------------------------------------------
import wx
 
class TextEntryDialog(wx.Dialog):
 
 def __init__(self, parent=None, title='Title', caption='Caption',size=(500, 200)):
  '''
  #~ dialog = TextEntryDialog(parent=None, title=title,caption=caption,size=size)
  #~ dialog = TextEntryDialog()
  ''' 
  style = wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER
  super(TextEntryDialog, self).__init__(parent, -1, title=title, style=style)
  self.text = wx.StaticText(self, -1, caption)
  self.input = wx.TextCtrl(self, -1, style=wx.TE_MULTILINE)
  self.input.SetInitialSize(size)
  self.buttons = self.CreateButtonSizer(wx.OK|wx.CANCEL)
  self.sizer = wx.BoxSizer(wx.VERTICAL)
  self.sizer.Add(self.text, 0, wx.ALL, 5)
  self.sizer.Add(self.input, 1, wx.EXPAND|wx.ALL, 5)
  self.sizer.Add(self.buttons, 0, wx.EXPAND|wx.ALL, 5)
  self.SetSizerAndFit(self.sizer)
  self.Center()
 def SetValue(self, value):
  self.input.SetValue(value)
 def GetValue(self):
  return self.input.GetValue()
 
def wxinputbox(Initialstring='Initial String',title='Title',caption='Caption',size=(500,200)):
 '''
 #~ >>>stringvalue=wxinputbox(Initialstring='Initial String',title='Title',caption='Caption',size=(500,200)):
 #~ >>> stringvalue=wxinputbox()
 '''
 app = wx.PySimpleApp()
 #~ dialog = TextEntryDialog(None, title=title,caption=caption,size=size)
 dialog = TextEntryDialog()
 dialog.SetValue(Initialstring)
 if dialog.ShowModal() == wx.ID_OK:
  stringvalue= dialog.GetValue()
 else:
  stringvalue=''
  dialog.Destroy()
  app.MainLoop()
 return stringvalue
  
if __name__ == '__main__': 
 #~ #使用wx的输入对话框
 stringvalue=wxinputbox()
 print(stringvalue)
 
 
#~ if __name__ == '__main__':
 #~ app = wx.PySimpleApp()
 #~ #使用wx自带的输入对话框
 #~ dialog = wx.TextEntryDialog(None, 'Rules:', 'Edit rules',
 #~ style=wx.TE_MULTILINE|wx.OK|wx.CANCEL)
 #~ dialog.SetInitialSize((500,200))
 #~ if dialog.ShowModal() == wx.ID_OK:
  #~ print 'OK'
 #~ dialog.Destroy()
 #~ app.MainLoop()

运行后的界面效果如下图所示:


以上内容为本文的全部分享,希望能为读者的技术学习提供有益帮助,同时也欢迎继续支持本站获取更多资源。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。