全网最全面的python的讲解,讲的无可挑剔《记得收藏》_python技术介绍

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新HarmonyOS鸿蒙全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img

img
img
htt

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注鸿蒙)
img

正文

使用蒙特卡洛方法估计圆周率的值

from random import *from math import *from time import *

DARTS = 1000000
hits = 0
clock()for i in range(1,DARTS):
x,y=random(),random()
dist = sqrt(x**2+y**2)
if(dist <= 1.0):
hits = hits+1
pi = 4*(hits/DARTS)print(“Pi的值是:%s”%pi)print(“程序运行时间是 %-5.5ss”%clock())
##寻找素数
for n in range(2,100):
for x in range(2,n):
if n % x == 0:
print(n, “equals”, x, “*”, n//x)
break;
else:
print(n, “is a prime number”)

文件循环

def main():
file_name = input(“What’s the file path?”)
try:
infile = open(file_name, ‘r’)
except FileNotFoundError:
print(“\nFile not found”)
else:
msum = 0.0
count = 0
line = infile.readline()
while line != “”:
msum += eval(line)
count += 1
line = infile.readline()
print(“\nThe average of the numbers is”, msum / count)

main()

图形用户界面

TKinter——Python标准GUI

1、15中常见的Tk控件
在这里插入图片描述
2、3种布局管理方法
在这里插入图片描述
3、控件的共同属性
在这里插入图片描述
Graphics——基于Tkinter扩展

1、GraphWin对象常用方法
在这里插入图片描述
2、图形对象通用方法
在这里插入图片描述
3、Point对象方法
在这里插入图片描述
4、Line对象方法
在这里插入图片描述
5、Circle对象方法
在这里插入图片描述
6、Rectangle对象方法
在这里插入图片描述
7、Oval对象方法 在这里插入图片描述
8、Polygon对象方法
在这里插入图片描述
9、Text对象方法
在这里插入图片描述
Turtle——Python内置的图形库

使用graphics库实现交互式多边形绘制

from graphics import *

def main():
win = GraphWin(“Draw a polygon”, 300, 300)
win.setCoords(0, 0, 300, 300)
message = Text(Point(150, 20), “CLick on five points”)
message.draw(win)

p1 = win.getMouse()
p1.draw(win)
p2 = win.getMouse()
p2.draw(win)
p3 = win.getMouse()
p3.draw(win)
p4 = win.getMouse()
p4.draw(win)
p5 = win.getMouse()
p5.draw(win)

polygon = Polygon(p1, p2, p3, p4, p5)
polygon.setFill(“peachpuff”)
polygon.setOutline(“black”)
polygon.draw(win)

message.setText(“Click anywhere to quit.”)
win.getMouse()

main()

使用TKinter实现简单的聊天界面

from tkinter import *import time

def main():
def send_msg():
strMsg = “我:” + time.strftime(“%Y-%m-%d %H:%M:%S”, time.localtime()) + “\n”
txtMsgList.insert(END, strMsg, ‘greencolor’)
txtMsgList.insert(END, txtMsg.get(‘0.0’, END))
txtMsg.delete(‘0.0’, END)

def cancelMsg():
txtMsg.delete(‘0.0’, END)

def send_msg_event(event):
if event.keysym == “Up”:
send_msg()

创建窗口

t = Tk()
t.title(“与Python聊天中”)

创建Frame容器

frmLT = Frame(width=500, height=320, bg=“white”)
frmLC = Frame(width=500, height=150, bg=“white”)
frmLB = Frame(width=500, height=30)
frmRT = Frame(width=200, height=500)

创建控件

txtMsgList = Text(frmLT)
txtMsgList.tag_configure(“greencolor”, foreground=“#008c00”) # 创建tag

txtMsg = Text(frmLC)
txtMsg.bind(“”, send_msg_event)

btnSend = Button(frmLB, text=‘发送’, width=8, command=send_msg)
btnCancel = Button(frmLB, text=‘取消’, width=8, command=cancelMsg)

imgInfo = PhotoImage(file=“python.gif”)
lblImage = Label(frmRT, image=imgInfo)
lblImage.image = imgInfo

窗口布局

frmLT.grid(row=0, column=0, columnspan=2, padx=1, pady=3)
frmLC.grid(row=1, column=0, columnspan=2, padx=1, pady=3)
frmLB.grid(row=2, column=0, columnspan=2)
frmRT.grid(row=0, column=2, rowspan=3, padx=2, pady=3)

固定大小

frmLT.grid_propagate(0)
frmLC.grid_propagate(0)
frmLB.grid_propagate(0)
frmRT.grid_propagate(0)

btnSend.grid(row=2, column=0)
btnCancel.grid(row=2, column=1)
lblImage.grid()
txtMsgList.grid()
txtMsg.grid()

t.mainloop()

main()

使用Turtle库绘制模拟时钟

from turtle import *from datetime import *

def Skip(step):
penup()
forward(step)
pendown()

def mkHand(name, length):

注册Turtle形状,建立表针Turtle

reset()
Skip(-length * 0.1)
begin_poly()
forward(length * 1.1)
end_poly()
handForm = get_poly()
register_shape(name, handForm)

def Init():
global secHand, minHand, hurHand, printer
mode(“logo”) # 重置Turtle指向北

建立三个表针Turtle并初始化

mkHand(“secHand”, 125)
mkHand(“minHand”, 130)
mkHand(“hurHand”, 90)
secHand = Turtle()
secHand.shape(“secHand”)
minHand = Turtle()
minHand.shape(“minHand”)
hurHand = Turtle()
hurHand.shape(“hurHand”)
for hand in secHand, minHand, hurHand:
hand.shapesize(1, 1, 3)
hand.speed(0)

建立输出文字Turtle

printer = Turtle()
printer.hideturtle()
printer.penup()

def SetupClock(radius):

建立表的外框

reset()
pensize(7)
for i in range(60):
Skip(radius)
if i % 5 == 0:
forward(20)
Skip(-radius - 20)
else:
dot(5)
Skip(-radius)
right(6)

def Week(t):
week = [“星期一”, “星期二”, “星期三”,
“星期四”, “星期五”, “星期六”, “星期日”]
return week[t.weekday()]

def Date(t):
y = t.year
m = t.month
d = t.day
return “%s %d %d” % (y, m, d)

def Tick():

绘制表针的动态显示

t = datetime.today()
second = t.second + t.microsecond * 0.000001
minute = t.minute + second / 60.0
hour = t.hour + minute / 60.0
secHand.setheading(6 * second)
minHand.setheading(6 * minute)
hurHand.setheading(30 * hour)

tracer(False)
printer.forward(65)
printer.write(Week(t), align=“center”,
font=(“Courier”, 14, “bold”))
printer.back(130)
printer.write(Date(t), align=“center”,
font=(“Courier”, 14, “bold”))
printer.home()
tracer(True)

ontimer(Tick, 100) # 100ms后继续调用tick

def main():
tracer(False)
Init()
SetupClock(160)
tracer(True)
Tick()
mainloop()

if name == “__main__”:
main()

使用turtle库绘制雪花图

import turtle as ttimport random as rd

def ground():
tt.hideturtle()
tt.speed(100)
for i in range(400):
tt.pensize(rd.randint(5, 10))
x = rd.randint(-400, 350)
y = rd.randint(-280, -1)
r = -y / 280
g = -y / 280
b = -y / 280
tt.pencolor((r, g, b))
tt.penup()
tt.goto(x, y)
tt.pendown()
tt.forward(rd.randint(40, 100))

def snow():
tt.hideturtle()
tt.pensize(2)
tt.speed(100)
for i in range(100):
r = rd.random()
g = rd.random()
b = rd.random()
tt.pencolor(r, g, b)
tt.penup()
tt.setx(rd.randint(-350, 350))
tt.sety(rd.randint(1, 270))
tt.pendown()
dens = rd.randint(8, 12)
snowsize = rd.randint(10, 14)
for j in range(dens):
tt.forward(snowsize)
tt.backward(snowsize)
tt.right(360 / dens)

def main():
tt.setup(800, 600, 0, 0)
tt.tracer(False)
tt.bgcolor(“black”)
snow()
ground()
tt.tracer(True)
tt.mainloop()

if name == “__main__”:
main()

Python库

1.Python官网提供的Python库索引(opens new window)

2.Python库的安装
自定义安装,去国内镜像站下载软件国内pipy镜像站
在这里插入图片描述
使用pip工具

文件安装,通过.whl文件安装

pip inatall xxx.whl

pip工具的安装

pip源码下载地址(opens new window)

解压后执行:python setup.py install即可

OS库常用函数

1、OS库常用函数
在这里插入图片描述
2、os.path是处理操作系统的一个字库,os.path常用函数
在这里插入图片描述
3、os.walk(path)用于遍历一个目录,返回一个三元组

  • root,dirs,files = os.walk(path)。
  • root是字符串,dirs和files是列表类型,表示root中的所有目录和所有文件。

sched库

1.sched库用来进行任务调度。

2.sched.scheduler()用来创建一个调度任务。

3.当需要对一个任务进行时间调度时,用这个函数scheduler.enter(delay,priority,action,argument=())。

4.delay表示延时多少时间去执行。

5.priority表示优先级。

6.action是具体需要调度的函数。

7.argument表示action函数需要的参数变量。

8.scheduler.run()运行调度任务中的全部调度事件。

9.scheduler.cancel(event)取消某个调度事件。

函数定时执行

import schedimport time

def print_time(msg=‘default’):
print(“当前时间”, time.time(), msg)

s = sched.scheduler(time.time, time.sleep)print(time.time())
s.enter(5, 1, print_time, argument=(“延迟5秒,优先级1”,))
s.enter(3, 2, print_time, argument=(“延迟3秒,优先级2”,))
s.enter(3, 1, print_time, argument=(“延迟3秒,优先级1”,))
s.run()print(time.time())

打印某一个目录下的全部文件

import os

path = input(“请输入一个路径:”)
for root, dirs, files in os.walk(path):
for name in files:
print(os.path.join(root, name))

打包发布python应用程序(使用py2exe库)

1.确定python程序可以执行,比如lesson.py。

2.写一个发布脚本setup.py(与lesson.py同目录),在里面指名需要调用运行的python程序。

from distutils.core import
setupimport py2exe

setup(console=[‘lesson.py’])

3.在命令行下执行python setup.py py2exe。

4.程序正确执行后会生成dist目录和__pycache__目录,前者包含了发布的exe程序,后者可以删除。

NumPy库

1、NumPy系统是Python的一种开源的数值计算扩展,能够存储和处理大型矩阵

  • N维数组对象Array。
  • 函数库。
  • 实用的线性代数、傅里叶变换和随机数生成函数。

2、NumPy提供了许多高级的数值编程工具

  • 矩阵数据类型
  • 矢量处理
  • 运算库

3、NumPy的主要对象是同种元素的多维数组

  • 维度叫做轴
  • 轴的个数叫做秩
  • NumPy的数组类被称为ndarray,通常被称作数组
    在这里插入图片描述
    1、创建数组
  • 使用array函数,利用常规的Python列表和元祖创造数组,所创建的数组类型由原序列中的元素类型决定,例如:a=array([[1,2],[3,4]],dtype=complex).
  • 使用占位符创建数组,例如函数zeros创建一个全是0的数组,函数ones创建一个全是的数组,函数empty创建一个内容随机并且依赖于内存状态的数组。
  • 利用arrange创建数组:arrange(10,30,5),从10开始,每次加5,直到30(不包括)

2、打印数组,类似于嵌套列表。

3、数组的算数运算按元素进行,NumPy中的乘法运算符*指示按元素计算。
4、矩阵乘法可以使用dot函数或创建矩阵对象实现。

5、NumPy提供常见的数学函数如sin、cos和exp。

6、NumPy对于多维数组的运算,缺省情况下并不使用矩阵运算,对数组进行矩阵运算,可调用相应的函数。

7、NumPy库提供了matrix类,使用matrix类创建的是矩阵对象,他们的加减乘除运算采用矩阵方式计算。

8、创建等比数列:numpy.logspace(1,10,3)表示在1到10中生成3个等比数列。

9、创建结构数组:

  • 声明结构数组类型:person=np.dtype({‘names’:[‘name’,‘age’],‘formats’:[‘S32’,‘i’]})
  • 创建结构数组:a = np.array([(‘zhang’,12)],dtype=person)
  • 访问结构数组的成员:a[0][‘name’]

10、更高级的运算:NumPy线型代数子库linalg。

  • inv函数:计算逆矩阵。
  • solve函数:求解多元一次方程组。

Matplotlib库

1、Matplotlib是一个数据可视化函数库。

2、pyplot子库提供了2D图表制作的基本函数。

3、matplotlib提供的直方图绘制函数为hist()。

4、matplotlib的image子库可用来对图像进行操作。

  • imread()函数将图像的各像素点的RGB值存入数组。
  • imshow()函数将存有RGB值的图像数组以图像的方式显示出来。

使用Matplotlib库绘制曲线

import matplotlib.pyplot as pltimport numpy as np

x = np.linspace(-np.pi, np.pi, 256, endpoint=True)
y = np.sin(x)
z = np.cos(x * x)

plt.figure(figsize=(8, 4))
plt.plot(x, z, “ro”, label=“ c o s ( x 2 ) cos(x^2) cos(x2)”)
plt.plot(x, y, label=“ s i n ( x ) sin(x) sin(x)”)

plt.xlabel(“Time/s”)
plt.ylabel(“”)
plt.legend()
plt.title(“matplotlib”)
plt.show()

使用Matplotlib子图的功能

import numpy as npimport matplotlib.pyplot as plt

w = np.linspace(0.1, 1000, 1000)
p = np.abs(1 / (1 + 0.1j * w))

plt.subplot(221)
plt.plot(w, p, linewidth=2)
plt.ylim(0, 1.5)

plt.subplot(222)
plt.semilogx(w, p, linewidth=2)
plt.ylim(0, 1.5)

plt.subplot(223)
plt.semilogy(w, p, linewidth=2)
plt.ylim(0, 1.5)

plt.subplot(224)
plt.loglog(w, p, linewidth=2)
plt.ylim(0, 1.5)

plt.show()

wxPython

1、wxPython是wxWidgets在python语言下的封装,wxWidgets是一个跨平台的GUI应用程序接口,使用C++编写。

2、对于Python3,wxPython的下载地址 (opens new window),注意选择对应的python版本号以及电脑的位数。
3、控件的事件:

  • 按钮点击
  • 文本域内容的改变
  • 鼠标滑过
  • 鼠标双击
  • 键盘按下

使用wxPython的绝对布局

-*-coding:utf8-*-import wx

‘’‘堆砌各个控件,基于坐标位置的控件绝对布局’‘’

class Lesson(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, parent=None, id=-1, title=u’极客学院’, size=(600, 600))
panel = wx.Panel(self, -1)
self.Centre()

button = wx.Button(panel, label=u’我是按钮’, pos=(20, 0), size=(100, 100))
statictext = wx.StaticText(panel, -1, u’我是不能编辑的文本框’, pos=(20, 100))
text = wx.TextCtrl(panel, -1, u’请在这里输入内容’, pos=(200, 210))
password = wx.TextCtrl(panel, -1, u’请在这里输入内容’, style=wx.TE_PASSWORD, pos=(200, 250))
mutiText = wx.TextCtrl(panel, -1, u’我是多行\n文本框’, style=wx.TE_MULTILINE, pos=(100, 300))
checkBox1 = wx.CheckBox(panel, -1, u"我是复选框1", pos=(150, 20))
checkBox2 = wx.CheckBox(panel, -1, u"我是复选框2", pos=(150, 40))

radio1 = wx.RadioButton(panel, -1, u"我是单选按钮1", pos=(150, 60), style=wx.RB_GROUP)
radio2 = wx.RadioButton(panel, -1, u"我是单选按钮2", pos=(150, 80))
radio3 = wx.RadioButton(panel, -1, u"我是单选按钮3", pos=(150, 100))

radioList = [u’一组单选按钮之1’, u’一组单选按钮之2’, u’一组单选按钮之3’]
wx.RadioBox(panel, -1, u"一组单选按钮", (10, 120), wx.DefaultSize, radioList, 2, wx.RA_SPECIFY_ROWS)

jikexueyuan = [u’极’, u’客’, u’学’, u’院’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’]
listBox = wx.ListBox(panel, -1, pos=(300, 20), size=(100, 100), choices=jikexueyuan, style=wx.LB_MULTIPLE)

img = wx.Image(r’python.gif’, wx.BITMAP_TYPE_ANY).Scale(100, 200)
sb1 = wx.StaticBitmap(panel, -1, wx.BitmapFromImage(img), pos=(300, 300))

if name == “__main__”:
app = wx.App()
frame = Lesson()
frame.Show()
app.MainLoop()

使用wxPython的相对布局

-*-coding:utf8-*-

import wx
‘’‘基于Sizer的控件相对布局’‘’

class Lesson(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, parent=None, id=-1, title=u’极客学院’, size=(600, 600))
self.panel = wx.Panel(self, -1)
self.Centre()

定义我们需要的各个控件

commandStatic = wx.StaticText(self.panel, -1, u’输命令:‘)
writePyStatic = wx.StaticText(self.panel, -1, u’写代码:’)

commandText = wx.TextCtrl(self.panel, -1, u’‘)
writePyText = wx.TextCtrl(self.panel, -1, u’‘’#-*-coding:utf-8-*-\n#在这写Python代码’‘’,
style=wx.TE_MULTILINE, size=(300, 200))

send = wx.Button(self.panel, label=u’发送命令’)
clear = wx.Button(self.panel, label=u’清空命令’)
screen = wx.Button(self.panel, label=u’查看屏幕’)

serverList = [‘192.168.0.4’, ‘10.19.2.1’, ‘192.168.0.111’, ‘172.26.123.5’, ‘192.168.6.11’, ‘192.99.8.8’]
server = wx.ListBox(self.panel, -1, size=(120, 100), choices=serverList, style=wx.LB_SINGLE)

img = wx.Image(r’python_logo.gif’, wx.BITMAP_TYPE_ANY).Scale(200, 200)
screenBox = wx.StaticBitmap(self.panel, -1, wx.BitmapFromImage(img))

基于BoxSizer布局

hBoxAll = wx.BoxSizer(wx.HORIZONTAL)

vBoxControl = wx.BoxSizer(wx.VERTICAL)

hBoxCommand = wx.BoxSizer(wx.HORIZONTAL)

vBoxWrite = wx.BoxSizer(wx.VERTICAL)

hBoxButton = wx.BoxSizer(wx.HORIZONTAL)

hBoxCommand.Add(commandStatic, proportion=1, flag=wx.ALL | wx.EXPAND, border=5)

hBoxCommand.Add(commandText, proportion=2, flag=wx.ALL | wx.EXPAND, border=5)

vBoxWrite.Add(writePyStatic, proportion=0, flag=wx.ALL | wx.EXPAND, border=5)

vBoxWrite.Add(writePyText, proportion=0, flag=wx.ALL | wx.EXPAND, border=5)

vBoxControl.Add(hBoxCommand, proportion=0, flag=wx.ALL, border=5)

vBoxControl.Add(vBoxWrite, proportion=0, flag=wx.ALL, border=5)

hBoxButton.Add(send, proportion=0, flag=wx.ALL, border=5)

hBoxButton.Add(clear, proportion=0, flag=wx.ALL, border=5)

hBoxButton.Add(screen, proportion=0, flag=wx.ALL, border=5)

vBoxControl.Add(hBoxButton, proportion=0, flag=wx.ALL, border=5)

hBoxAll.Add(server, proportion=1, flag=wx.ALL | wx.EXPAND, border=5)

hBoxAll.Add(vBoxControl, proportion=2, flag=wx.ALL | wx.EXPAND, border=5)

hBoxAll.Add(screenBox, proportion=3, flag=wx.ALL | wx.EXPAND, border=5)

self.panel.SetSizer(hBoxAll)

hBoxAll.Fit(self)

基于GridSizer布局

gridSizerAll= wx.GridSizer(rows=3, cols=3, hgap=5, vgap=5)

gridSizerAll.AddMany([(server, 0, wx.EXPAND), (commandStatic, 0, wx.EXPAND), (commandText, 0, wx.EXPAND),

(writePyStatic, 0, wx.EXPAND), (send, 0, wx.EXPAND), (clear, 0, wx.EXPAND),

(writePyText, 0, wx.EXPAND), (screen, 0, wx.EXPAND), (screenBox, 0, wx.EXPAND)])

self.panel.SetSizer(gridSizerAll)

gridSizerAll.Fit(self)

#基于FlexGridSizer布局

flexGridSizerAll = wx.FlexGridSizer(rows=3, cols=3, hgap=5, vgap=5)

flexGridSizerAll.AddMany([(server, 0, wx.EXPAND), (commandStatic, 0, wx.EXPAND), (commandText, 0, wx.EXPAND),

(writePyStatic, 0, wx.EXPAND), (send, 0, wx.EXPAND), (clear, 0, wx.EXPAND),

(writePyText, 0, wx.EXPAND), (screen, 0, wx.EXPAND), (screenBox, 0, wx.EXPAND)])

self.panel.SetSizer(flexGridSizerAll)

flexGridSizerAll.AddGrowableCol(2, 1)

flexGridSizerAll.AddGrowableRow(2, 1)

flexGridSizerAll.Fit(self)

#基于GirdBagSizer布局
gridBagSizerAll = wx.GridBagSizer(hgap=5, vgap=5)
gridBagSizerAll.Add(server, pos=(0, 0),
flag=wx.ALL | wx.EXPAND,
span=(7, 2), border=5)

gridBagSizerAll.Add(commandStatic, pos=(0, 2),
flag=wx.ALL | wx.ALIGN_CENTER_VERTICAL,
border=5)
gridBagSizerAll.Add(commandText, pos=(0, 3),
flag=wx.ALL | wx.ALIGN_CENTER_VERTICAL,
span=(1, 2), border=5)

gridBagSizerAll.Add(writePyStatic, pos=(1, 2),
flag=wx.ALL | wx.ALIGN_CENTER_VERTICAL,
span=(1, 3), border=5)
gridBagSizerAll.Add(writePyText, pos=(2, 2),
flag=wx.ALL | wx.ALIGN_CENTER_VERTICAL,
span=(4, 3), border=5)
gridBagSizerAll.Add(send, pos=(6, 2),
flag=wx.ALL | wx.ALIGN_CENTER_VERTICAL,
span=(1, 1), border=5)
gridBagSizerAll.Add(clear, pos=(6, 3),
flag=wx.ALL | wx.ALIGN_CENTER_VERTICAL,
span=(1, 1), border=5)
gridBagSizerAll.Add(screen, pos=(6, 4),
flag=wx.ALL | wx.ALIGN_CENTER_VERTICAL,
span=(1, 1), border=5)

gridBagSizerAll.Add(screenBox, pos=(0, 5),
flag=wx.ALL | wx.ALIGN_CENTER_VERTICAL,
span=(7, 2), border=5)

self.panel.SetSizer(gridBagSizerAll)

self.SetSizeHints(250, 200, 700, 400) # 设定窗口的最大最小值

gridBagSizerAll.AddGrowableCol(0, 1)

gridBagSizerAll.AddGrowableCol(1, 1)

gridBagSizerAll.AddGrowableCol(2, 1)

gridBagSizerAll.AddGrowableCol(3, 1)

gridBagSizerAll.AddGrowableCol(4, 1)

gridBagSizerAll.AddGrowableCol(5, 1)

gridBagSizerAll.AddGrowableCol(6, 1)

gridBagSizerAll.AddGrowableRow(0, 1)

gridBagSizerAll.AddGrowableRow(1, 1)

gridBagSizerAll.AddGrowableRow(2, 1)

gridBagSizerAll.AddGrowableRow(3, 1)

gridBagSizerAll.AddGrowableRow(4, 1)

gridBagSizerAll.AddGrowableRow(5, 1)

gridBagSizerAll.AddGrowableRow(6, 1)

gridBagSizerAll.Fit(self)

if name == “__main__”:
app = wx.App()
frame = Lesson()
frame.Show()
app.MainLoop()

wxPython事件编程

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注鸿蒙)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

gridBagSizerAll.AddGrowableCol(3, 1)

gridBagSizerAll.AddGrowableCol(4, 1)

gridBagSizerAll.AddGrowableCol(5, 1)

gridBagSizerAll.AddGrowableCol(6, 1)

gridBagSizerAll.AddGrowableRow(0, 1)

gridBagSizerAll.AddGrowableRow(1, 1)

gridBagSizerAll.AddGrowableRow(2, 1)

gridBagSizerAll.AddGrowableRow(3, 1)

gridBagSizerAll.AddGrowableRow(4, 1)

gridBagSizerAll.AddGrowableRow(5, 1)

gridBagSizerAll.AddGrowableRow(6, 1)

gridBagSizerAll.Fit(self)

if name == “__main__”:
app = wx.App()
frame = Lesson()
frame.Show()
app.MainLoop()

wxPython事件编程

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注鸿蒙)
[外链图片转存中…(img-NbmB9yi6-1713612927647)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 26
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值