python3 gui编程 哪个好

Python012

python3 gui编程 哪个好,第1张

Python本身语法优美, 但一旦到了GUI就丑陋得不行.

wxPython PyQT都要用一种不够优美的方式来描述GUI.

而且你有个很尴尬的问题, 要不要学一个你根本无法掌控的工具?

你花了钱买了本 wxPython in Action, 学熟练了. 这好了. Py3来了. 社区更新不到. 甚至哪天项目作者挂了, 参见web.py, 你怎么办? 虽然肯定会有大牛去接手, 但效率呢? 你本质上不是在学习GUI编程, 而是在学习如何使用工具.

就是说, 你学这些GUI, 根本上就是将自己绑定在了上面. Python最为人诟病的地方就是, Python 永远要依靠别的库来扩展, 没有一种完全意义上的独立性. 如果真能做到Java那种程度, 独立不独立也无所谓了.

所以, 我个人建议, 在这个不是桌面为王的时代. 买本HTML5的书, 用Python的WEB框架, 建立一个本地服务器..虽然说又要学HTML5很麻烦, 但相比于用桌面各种各样的GUI描述语言, HTML那种标签化设计已经简单很多了. 你完全不需要管理内存, 不需要担心异步的处理. 为下一步的在线化铺平道路.

Python是什么都能做一点, 但什么都有替代品. 那就要发挥Python的优势, 整合资源啊! 将GUI的渲染交给浏览器. 将逻辑的处理交给Python.

Python+HTML5+JS+Python框架使用经验, 对未来也有好处.

你需要做的, 就是写好一个模板, 然后用框架表现出来.

这个功能在windows上测试安装卸载时,有时会用到,网上查到的两种语言的版本如下:

C#版:

[csharp] view plain copy

Shell shell = new Shell()

Folder folder = shell.NameSpace(Path.GetDirectoryName(appPath))

FolderItem app = folder.ParseName(Path.GetFileName(appPath))

string sVerb = isLock ? "锁定到任务栏(&K)" : "从任务栏脱离(&K)"

foreach (FolderItemVerb Fib in app.Verbs())

{

if (Fib.Name == sVerb)

{

Fib.DoIt()

return true

}

}

return false

VB版:

[vb] view plain copy

Public Shared Function LockApp(isLock As Boolean, appPath As String) As Boolean

Dim shell As New Shell()

Dim folder As Folder = shell.[NameSpace](Path.GetDirectoryName(appPath))

Dim app As FolderItem = folder.ParseName(Path.GetFileName(appPath))

Dim sVerb As String = If(isLock, "锁定(&K)", "脱离(&K)")

For Each Fib As FolderItemVerb In app.Verbs()

If Fib.Name = sVerb Then

Fib.DoIt()

Return True

End If

Next

Return False

End Function

接下来,就是要把上面的代码如何转化为Python了,此处使用到了Windows接口,Python中调用windows接口,可以使用win32com

代码如下:

[python] view plain copy

def DeleteQuickLaunchOnTaskBar(lnkName):

objShell = win32com.client.Dispatch("Shell.Application")

taskbarPath = os.path.join(os.environ["appdata"], r'Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar')

lnkName = DesktopCommon.ToUnicode(lnkName)

objFolder = objShell.NameSpace(taskbarPath)

desktopItems = objFolder.Items()

for item in desktopItems:

if DesktopCommon.ToUnicode(item.Name) == lnkName:

verbs = item.Verbs()

for verb in verbs:

if DesktopCommon.ToUnicode(verb.Name) == u"从任务栏脱离(&K)" or  DesktopCommon.ToUnicode(verb.Name) == u"Unpin from Tas&kbar":

verb.DoIt()

如果希望在树莓派开机进入界面后,自动开始一个python的gui程序,按照如下方法,以my_program.py文件为例:

1.给文件设置运行权限

chmod +x my_program.py

2.在这个.py文件最开始,加上python编译器的地址

比如 #!/usr/bin/env python

如果不清楚python编译器的地址是什么,可以用 which python命令查看。如果是用python3,是用 which python3.

3.打开自启动的文件(用户为pi的时候)

nano /home/pi/.config/lxsession/LXDE-pi/autostart

增加一行

@/home/pi/folder/my_program.py

注意:如果.py文件中存在地址,要写绝对地址。