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()`
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/185001.html
標籤:其他
