热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

pythonwinform自动化_c#winformUI+python底层的一点尝试

鉴于python做winform之类的UI比较弱。于是想结合C#的winform和python的底层开发(windows平台)。主要从一些网站抓取rss,然后解析rs

鉴于python做winform之类的UI比较弱。于是想结合C#的winform 和 python的底层开发(windows平台)。

主要从一些网站抓取rss,然后解析rss,并在界面上显示。

结构

这是一个c/s架构。

server端,用python编写,负责抓取rss并解析。

client端,从server端拿到数据然后显示。

client端和server端通过socket进行通讯。

掉进去过的坑

1. c# 正则表达式匹配中文的问题。

json_str = "\\u4e00"

Regex = new Regex("[\\u4e00-\\u9fa5']+")//不起作用

Regex = new Regex("[\\\\u4e00-\\\\u9fa5']+")//ok

c# \\转换为\的问题,前一篇帖子已经提过。

2. c# socket发送数据问题:

帖子这里:http://bbs.csdn.net/topics/390949473

总结了下,问题的根源在于,服务器端用python-twisted中的LineReceiver这个Protocol,也就是说发送消息以"\r\n"为结束符(windows上)

感受

或许是对c#的语法不熟,相同的东西,用python实现可能只需要1~3h,用C#折腾了两天。主要是出了问题,google不好找答案,其次,很多东西底层调试不进去,最后问问c#同行,基本没有几个能够答个所以然。

或许为了他的界面而是用C#,但需要权衡下,你是否能够驾驭各种兼容问题以及时间成本。

虽然python有很多优秀的底层,以及web的ui都不错,但对于desktop ui来说,有所欠缺,特别是游戏。这块短板的弥补,暂时木有神马好的方案。优先级排行:成熟的开源方案 > 成熟的闭源方案> 不咋成熟的开源方案 > 不咋成熟的闭源方案。

其次还要考虑技能的熟练程度。也许结合这个以后的优先级可能是:成熟的开源方案 > 不咋成熟的开源方案 >  成熟的闭源方案> 不咋成熟的闭源方案。

出路:

python的gui不是太少,恰恰相反,太多!

自带的有Tkinter(for 2.x python)。

===============================================================

此外:

QT--商业性质的,比较漂亮,lisence resrited.

GTK -- 对于linux上面的UI开发推荐。

TK -- 很丑,跨平台,性能不错(http://wiki.tcl.tk/4145)

===============================================================

以下代码为Tkinter入门级demo。 此外,有一个不错的demo网站:http://thinkingtkinter.sourceforge.net/

# -*- coding: CP936 -*-

from Tkinter import *

root = Tk()

root.geometry("800x600+300+300")

def Noop():

print "not implemented action"

#===menu===============

menu = Menu(root)

root.config(menu=menu)

fileMenu = Menu(menu)

editMenu = Menu(menu)

menu.add_cascade(label="File", menu = fileMenu)

menu.add_cascade(label="Edit", menu = editMenu)

#--"File" menu--

fileMenu.add_command(label="New Project...", command = Noop)

fileMenu.add_command(label="New...", command=Noop)

fileMenu.add_separator()

fileMenu.add_command(label="Exit", command =Noop)

#--"Edit" menu--

editMenu.add_command(label="Redo", command=Noop)

#===Toolbar==============

toolbar = Frame(root)

insertBtn = Button(toolbar, text="Insert Image",command = Noop)

insertBtn.pack(side=LEFT,padx=2)

printBtn = Button(toolbar, text="Print",command = Noop)

printBtn.pack(side=LEFT,padx=2)

toolbar.pack(side=TOP, fill=X)

#===Status Bar ==========

status= Label(root, text="prepare to do something...", bd=1, relief=SUNKEN, anchor=W)

status.pack(side=BOTTOM, fill = X)

#===Message Box =========

import tkMessageBox as msg

#msg.showinfo("window title","an apple a day keeps the doctor away")

answer = msg.askquestion("question1", "Do you like juice?")

print answer

#===Canvas ==============

canvas = Canvas(root,width=200, height =100)

canvas.pack()

blackline = canvas.create_line(0,0,200,50)

redline = canvas.create_line(0,100,200,50,fill='red')

greenbox = canvas.create_rectangle(25,25,100,50,fill='green')

canvas.delete(redline)

#===icon&images==========

photo = PhotoImage(file=r'E:\workspace\python\111.gif')#GIF and PGM/PPM files

label = Label(root, image= photo)

label.pack()

root.mainloop()

调整布局使用grid函数,demo如下:

root=Tk()

#===grid layout =========

frame = Frame(root)

frame.pack()

Label(frame, text="name").grid(row=0, sticky=W)

Label(frame, text="password").grid(row=1, sticky=W)

Entry(frame).grid(row=0,column=1)

Entry(frame).grid(row=1,column=1)

Checkbutton(frame,text="remember me").grid(columnspan=2)

root.mainloop()



推荐阅读
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有