python wxpython菜鸟教程_wxpython新手向教程

这篇教程介绍了如何使用wxPython进行窗口和控件的创建,包括wx.Frame和wx.Panel的继承,以及TextCtrl、Button和StaticText的基本使用。推荐使用wxformbuilder作为布局管理器,并通过示例代码展示了如何创建和管理事件。教程还涉及了多线程在避免程序卡死中的应用。
摘要由CSDN通过智能技术生成

wxpython教程

手写wxpython会有各种问题,可以去下载wxformbuilder布局管理器

然后去百度一下这个布局管理器的教程,这里太多了不多赘述。

两种创建窗口方式:class MyFrame(wx.Frame)和class MyPanel(wx.Panel)来继承wx.Frame和wx.Panel,但是用wxformbuilder来创建布局和窗口会自动帮忙写好。

继承wx.Frame的结尾是app=wx.App() frm=MyFrame() frm.Show() app.MainLoop()Show中的参数为True/False,False则不可见窗口

继承wx.Panel的结尾是app = wx.App() frame = wx.Frame(None) panel = MyPanel(frame) frame.Show() app.MainLoop()

MainLoop为每个继承类都要填写,否则无法运行

基本的控件TextCtrl,Button,StaticText

TextCtrl

基本的属性Clear()(清空TextCtrl中的内容),AppendText()(在末尾添加文本)

排列布局在wxformbuilder中都有举几个列子(wx.TE_MULTILNE为可以进行多行输入,wx.TE_LEFT为左对齐,可以用 | 来进行多种styel组合的方式)

Button

wx.Button来创建按钮

按钮调用函数

可以这么写self.Button.Bind(self,self.func)但是在wxformbuilder进行设置事件,它会写好的

StaticText

可以利用self.tc = wx.StaticText(self, 0,’ str ')

第三个参数为标签内容

以上都是在 class MyPanel(wx.Panel):的理论上进行的,控件最好都是在Panel上进行控制和编写!!

panel的创建方式wx.Panel.init(self, parent)

frame的创建方式 wx.Frame.init(self,None,title=“str”)

以上都可以用wxformbuilder来完成!

下面插入我的一段作业代码``

#-- coding: utf-8 --

import wx

import wx.xrc

import time

import random

import threading

‘’‘利用threading解决while死循环会卡死程序的问题,’’’

###########################################################################

Class MyPanel1

###########################################################################

dict = {1: ‘name’,

2: ‘name’,

3: ‘name’,

4: ‘name’,

5: 'name‘,

6: ‘name’,

7: ‘name’,

8: ‘name’,

9: ‘name’,

10: ‘name’,

11: 'name’,

12: ‘name’,

13: ‘name’,

14: ‘name’,

15: ‘name’,

16: ‘name’,

17: ‘name’,

18: ‘name’,

19: ‘name’,

20: ‘name’,

21: ‘name’,

22: ‘name’,

23: ‘name’,

24: ‘name’,

25: ‘name’,

26: ‘name’,

27: ‘name’,

28: ‘name’}

class MyPanel(wx.Panel):

def __init__(self, parent):

wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.Size(500, 300),

style=wx.TAB_TRAVERSAL)

self.Sure = False

bSizer1 = wx.BoxSizer(wx.VERTICAL)

self.m_staticText1 = wx.StaticText(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0)

self.m_staticText1.Wrap(-1)

bSizer1.Add(self.m_staticText1, 1, wx.ALL | wx.EXPAND, 5)

gSizer1 = wx.GridSizer(0, 2, 0, 0)

self.StartButton = wx.Button(self, wx.ID_ANY, u"Start", wx.DefaultPosition, wx.DefaultSize, 0)

gSizer1.Add(self.StartButton, 0, wx.ALL, 5)

self.StopButton = wx.Button(self, wx.ID_ANY, u"Stop", wx.DefaultPosition, wx.DefaultSize, 0)

gSizer1.Add(self.StopButton, 0, wx.ALL | wx.ALIGN_RIGHT, 5)

bSizer1.Add(gSizer1, 1, wx.EXPAND, 5)

self.SetSizer(bSizer1)

self.Layout()

# Connect Events

self.StartButton.Bind(wx.EVT_BUTTON, self.StartButtonOnButtonClick)

self.StopButton.Bind(wx.EVT_BUTTON, self.StopButtonOnButtonClick)

def __del__(self):

pass

# Virtual event handlers, overide them in your derived class

def StartButtonOnButtonClick(self, event):

self.Sure = True

def StopButtonOnButtonClick(self, event):

self.Sure = False

def Round(self):

self.m_staticText1.SetLabel('现在开始抽取')

while True:

if self.Sure == True:

self.m_staticText1.SetLabel('{0}'.format(dict[random.randint(1,28)]))

time.sleep(0.1)

app = wx.App()

frame = wx.Frame(None)

panel = MyPanel(frame)

frame.Show()

task=threading.Thread(target=panel.Round)

task.start()

app.MainLoop()`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值