百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

Python GUI初步认识与C/S端发展之我见|拉呱

ztj100 2025-06-09 07:28 73 浏览 0 评论

今天翻了翻《Python编程(第四版)》,这本书其实买来还是有点久的,毕竟现在Python 3.9都出来了,这书是Python 3.1/3.2 Beta的示例。当然也暴露了我这书买来没怎么翻过的事实。(狗头)

其实翻书本来是想看看有没有写关于Python类的装饰符相关的东西,结果翻了下目录好像并没有。不过我发现了一个在Python世界一直没有关注过的东西:GUI。

其实对于我这个B/S死忠粉来说,对于C/S的应用几乎没有怎么编程经验,也就没怎么接触过GUI这块,无论是大学期间Java程序设计这门课讲GUI还是C# .net课上的GUI,相关的课程作业和实验设计我都是有点头疼的,emmmm 可能也跟我一直从事B/S相关事情有关系吧。

今天吸引来,主要是因为想了解下Python GUI比起Java和C#,有没有什么特点。

先说结论:Python自带GUI框架,能用;几行代码开个窗口,方便。果然人生苦短,我用Python。(狗头)

Python GUI框架主要有tkinter、wxPython、PyQt、PythonCard、Dabo等,而Python自带的是thinkter。简单的窗口启动代码如下:

from tkinter import *

Label(text="啥玩意").pack()
mainloop()

运行后如图:

咋说呢,三行代码起一个GUI,这是我第一个接触到的能干这个事儿的语言(当然时过境迁,现在估计有很多现代化语言都可以干这个事儿了,知道的大佬可以在评论区留言)。

再来点元素:

from tkinter import *
from tkinter.messagebox import showinfo

def reply():
    showinfo(title="恋爱循环", message="按钮按下去啦!")

window = Tk()
button = Button(window, text="快来点击", command=reply)
button.pack()
Label(text="啥玩意").pack()
window.mainloop()

运行后如图:

好!很好!很有精神!不算空行才9行代码,把Java需要写十几行实现的功能给搞定了。

Python GUI的面向对象写法以及窗口嵌套:

类定义文件TestGUI.py:

from tkinter import *
from tkinter.messagebox import showinfo

class TestGUI(Frame):
    def __init__(self, parent=None):
        Frame.__init__(self, parent)
        button = Button(self, text='按下去', command=self.reply)
        button.pack()

    def reply(self):
        showinfo(title="恋爱循环2", message="でも そんなんじゃ だーめ")

调用文件bindgui.py:

from tkinter import *
from TestGUI import TestGUI

main = Tk()
Label(main, text=__name__).pack()

popup = Toplevel()
Label(popup, text="绑定").pack(side=LEFT)
TestGUI(popup).pack(side=RIGHT)
main.mainloop()

运行后如图:

好了,Hello World就写到这了,我也不做代码讲解了。想多说下自己对于C/S端当下发展的理解。

其实很长一段时间我一直觉得在移动互联网的蓬勃发展,B/S端将逐步取代C/S端,一方面是因为越来越多的人用手机而不是PC,另一方面由于Web技术的进步,Web在全平台适配上已经不是什么难事,因此当初我认为C/S终将会走向没落,而B/S终究会成为最为重要的程序开发方式。

当然直到现在,我觉得我的判断还是对了一半的:B/S端确实成为了最为重要的程序开发方式,即使是App开发,使用Native开发的也要少于用WebView的。但是我失算的一点是,C/S端并没有走向没落,相反人家还活得好好的。究其原因我认为当时的判断忽略了两点:一是物联网IoT相关领域的发展,二是传统行业对于GUI软件的需求。

众所周知,近几年IoT其实发展的还是可以的,尤其是工业互联网和智能家居领域的相关技术发展,而这些数字化系统必不可少的需要配置相关的软件去操控这些物理设备,需要在系统启动后就能直接打开软件并进入相关界面,这个时候使用B/S其实并不是特别合适,因为毕竟浏览器这种方式还需要访问网址之类的东西。当然随着目前的发展,有些操控版已经换成了基于Android开发的App了,这种的倒是可以解决这个问题。

另外就是传统行业一些需求,其实并不是说他们的业务不适合B/S开发,而是技术债积累过多,对于系统的重构成本可能不太合算,这样的话反而使用C/S端更容易一些。而且据我所知C#的.net窗口开发在画界面方面是可以直接拖拽的,所以C/S编程相关的职位其实要求不是那么高,而换了B/S之后所有架构都要重新评估,引入了技术复杂度,对于一个非互联网的传统企业来说,IT本身就属于成本部门或稳定部门而不是利润来源部门,必然唯恐避之不及。这种客观存在的情况也是C/S一直存在的必要之一,当然相比第一个的增量,这一个仅仅是一个存量,并不能阻挡大势。

这就让我想起当年互联网兴起的时候,有人宣称书籍将会消亡,而再往前电视出现之后,有人也宣称过广播会消亡。虽然我们都知道事物都是螺旋上升的,旧事物会消亡,但是这个真正的“旧”的道理,是站在对人是否有用、有利、能可持续发展的角度来看的。书籍和广播固然是传统的,但它仍然是人们获取知识、交流思想和传输知识的有益渠道,只要这个作用没有消失,他们也不会消失,即使他们从历史的角度来说,确实是“旧”的。

拿过这样的思想,再来看待当下科技互联网的发展,其实所有的主流语言、开发模式、软件工程方式方法,都是这样的道理,只不过是你方唱罢我登场。The wheel turns, nothing is ever new.

相关推荐

Linux集群自动化监控系统Zabbix集群搭建到实战

自动化监控系统...

systemd是什么如何使用_systemd/system

systemd是什么如何使用简介Systemd是一个在现代Linux发行版中广泛使用的系统和服务管理器。它负责启动系统并管理系统中运行的服务和进程。使用管理服务systemd可以用来启动、停止、...

Linux服务器日常巡检脚本分享_linux服务器监控脚本

Linux系统日常巡检脚本,巡检内容包含了,磁盘,...

7,MySQL管理员用户管理_mysql 管理员用户

一、首次设置密码1.初始化时设置(推荐)mysqld--initialize--user=mysql--datadir=/data/3306/data--basedir=/usr/local...

Python数据库编程教程:第 1 章 数据库基础与 Python 连接入门

1.1数据库的核心概念在开始Python数据库编程之前,我们需要先理解几个核心概念。数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它就像一个电子化的文件柜,能让我们高效...

Linux自定义开机自启动服务脚本_linux添加开机自启动脚本

设置WGCloud开机自动启动服务init.d目录下新建脚本在/etc/rc.d/init.d新建启动脚本wgcloudstart.sh,内容如下...

linux系统启动流程和服务管理,带你进去系统的世界

Linux启动流程Rhel6启动过程:开机自检bios-->MBR引导-->GRUB菜单-->加载内核-->init进程初始化Rhel7启动过程:开机自检BIOS-->M...

CentOS7系统如何修改主机名_centos更改主机名称

请关注本头条号,每天坚持更新原创干货技术文章。如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习1.前言本文将讲解CentOS7系统如何修改主机名。...

前端工程师需要熟悉的Linux服务器(SSH 终端操作)指令

在Linux服务器管理中,SSH(SecureShell)是远程操作的核心工具。以下是SSH终端操作的常用命令和技巧,涵盖连接、文件操作、系统管理等场景:一、SSH连接服务器1.基本连接...

Linux开机自启服务完全指南:3步搞定系统服务管理器配置

为什么需要配置开机自启?想象一下:电商服务器重启后,MySQL和Nginx没自动启动,整个网站瘫痪!这就是为什么开机自启是Linux运维的必备技能。自启服务能确保核心程序在系统启动时自动运行,避免人工...

Kubernetes 高可用(HA)集群部署指南

Kubernetes高可用(HA)集群部署指南本指南涵盖从概念理解、架构选择,到kubeadm高可用部署、生产优化、监控备份和运维的全流程,适用于希望搭建稳定、生产级Kubernetes集群...

Linux项目开发,你必须了解Systemd服务!

1.Systemd简介...

Linux系统systemd服务管理工具使用技巧

简介:在Linux系统里,systemd就像是所有进程的“源头”,它可是系统中PID值为1的进程哟。systemd其实是一堆工具的组合,它的作用可不止是启动操作系统这么简单,像后台服务...

Red Hat Enterprise Linux 10 安装 Kubernetes (K8s) 集群及高级管理

一、前言...

Linux下NetworkManager和network的和平共处

简介我们在使用CentoOS系统时偶尔会遇到配置都正确但network启动不了的问题,这问题经常是由NetworkManager引起的,关闭NetworkManage并取消开机启动network就能正...

取消回复欢迎 发表评论: