wxPython是Python编程语言的一个GUI工具箱。他使得Python程序员能够轻松的创建具有健壮、功能强大的图形用户界面的程序。它是Python语言对流行的wxWidgets跨平台GUI工具库的绑定。而wxWidgets是用C++语言写成的。和Python语言与wxWidgets GUI工具库一样,wxPython是开源软件。这意味着任何人都可以免费地使用它并且可以查看和修改它的源代码,或者贡献补丁,增加功能。wxPython是跨平台的。这意味着同一个程序可以不经修改地在多种平台上运行。现今支持的平台有:32位微软Windows操作系统、大多数Unix或类Unix系统、苹果Mac OS X。由于使用Python作为编程语言,wxPython编写简单、易于理解。
Code:ListCtrl import wx import sys, glob, random import data
class DemoFrame(wx.Frame): def__init__(self):
wx.Frame.__init__(self, None, -1, "wx.ListCtrl in wx.LC_REPORT mode",
size=(600,400))
il = wx.ImageList(16,16, True) for name in glob.glob("smicon??.png"):
bmp = wx.Bitmap(name, wx.BITMAP_TYPE_PNG)
il_max = il.Add(bmp)
self.list = wx.ListCtrl(self, -1, style=wx.LC_REPORT)
self.list.AssignImageList(il, wx.IMAGE_LIST_SMALL)
# Add some columns for col, text in enumerate(data.columns):
self.list.InsertColumn(col, text)
# add the rows for item in data.rows:
index = self.list.InsertStringItem(sys.maxint, item[0]) for col, text in enumerate(item[1:]):
self.list.SetStringItem(index, col+1, text)
# give each item a random image img = random.randint(0, il_max)
self.list.SetItemImage(index, img, img)
# set the width of the columns in various ways self.list.SetColumnWidth(0, 120)
self.list.SetColumnWidth(1, wx.LIST_AUTOSIZE)
self.list.SetColumnWidth(2, wx.LIST_AUTOSIZE)
self.list.SetColumnWidth(3, wx.LIST_AUTOSIZE_USEHEADER)
wx.CallAfter import wx import threading import random
class WorkerThread(threading.Thread): """
This just simulates some long-running task that periodically sends
a message to the GUI thread. """ def__init__(self, threadNum, window):
threading.Thread.__init__(self)
self.threadNum = threadNum
self.window = window
self.timeToQuit = threading.Event()
self.timeToQuit.clear()
self.messageCount = random.randint(10,20)
self.messageDelay =0.1+2.0* random.random()
def stop(self):
self.timeToQuit.set()
def run(self):
msg ="Thread %d iterating %d times with a delay of %1.4f\n" \ % (self.threadNum, self.messageCount, self.messageDelay)
wx.CallAfter(self.window.LogMessage, msg)
for i in range(1, self.messageCount+1):
self.timeToQuit.wait(self.messageDelay) if self.timeToQuit.isSet(): break
msg ="Message %d from thread %d\n"% (i, self.threadNum)
wx.CallAfter(self.window.LogMessage, msg) else:
wx.CallAfter(self.window.ThreadFinished, self)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合终身会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步