Python wxPython 实现界面跳转的线程方案

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

本文介绍在 wxPython 中实现界面跳转的一种方法。由于 wxPython 未直接提供内置跳转机制,可通过 threading 模块结合关闭窗口与新窗口打开逻辑来实现。核心思路是在按钮事件中启动线程,延时关闭当前界面后初始化并运行新界面主循环,确保 UI 响应正常。

wxPython 界面跳转背景

在使用 wxPython 进行界面设计时,常会遇到需要嵌套多个界面的场景,此时便涉及到界面之间的跳转逻辑。

wxPython 官方并未直接提供现成的界面跳转接口(也可能是因为个人对库的理解尚浅)。

因此,我们需要借助 threading 模块来辅助实现这一功能。

基于 threading 的实现思路

核心实现思路如下:

注意:以下代码仅为源码片段,删减部分可能导致程序无法直接运行,但主要目的是展示如何通过按钮点击事件触发界面跳转,具体逻辑为:点击按钮后关闭当前界面,并打开新界面。

主要涉及 doClose 函数(由按钮触发)以及 QU 函数。

代码实现与关键函数


import wx
import pymysql,time,threading
from MySQL import Make_bill,function
class Withdrawal1(wx.App):
  def doClose(self,j):
    time.sleep(j)
    self.frame.Close()
  def __init__(self,YuanZhangH):
    self.YuanZhangH=YuanZhangH
    wx.App.__init__(self)
    self.frame = wx.Frame(parent=None,title='取 款',size=(535,450),style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER ^ wx.MAXIMIZE_BOX )
    panel=wx.Panel(self.frame,-1)
    label_pass = wx.StaticText(panel,-1,"取款金额:", pos=(80,200))
    #style 为设置输入
    self.JinE = wx.TextCtrl(panel,-1, size=(250,35), pos=(140,190))
    self.QueDing_button = wx.Button(panel, -1, "确    认", size=(80,60), pos=(120,280))
    self.QuXiao_button     = wx.Button(panel, -1, "反    回", size=(80, 60), pos=(340,280))
    self.QueDing_button.SetBackgroundColour('#0a74f7')
    self.QuXiao_button.SetBackgroundColour('#0a74f7')
    self.Bind(wx.EVT_BUTTON, self.QuK, self.QueDing_button)
    self.Bind(wx.EVT_BUTTON, self.QU, self.QuXiao_button)  #通过一个按钮触发界面跳转
    self.frame.Center()
    self.frame.Show(True)
  def QuK(self, event):
    pass
  def QU(self, event):
    t = threading.Thread(target=self.doClose, args=(0.05,))
    t.start()              #通过threading和doClose函数关闭界面
    jie = function.Jiemian(self.YuanZhangH) #打开新界面  
    jie.MainLoop()

当点击“取款”按钮时,程序将跳转到取款界面,同时原界面关闭。具体实现代码如下:

总结

总结

以上介绍了利用 Python 和 wxPython 实现界面跳转的功能,希望能对大家有所帮助。如有任何疑问,欢迎留言,小编会及时回复。感谢大家对本站的支持!若觉得本文对您有帮助,欢迎转载,请注明出处,谢谢!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表