精华内容
下载资源
问答
  • 不要问我为什么 python这种事,我回到“高兴咋地”也不是不可以,总之好奇有没有的解决方案。逛了一圈下来,总体上来说,python 图形界面有以下几个可行度比较高的解决方案。1. pyside为什么要把它写第一...

    不要问我为什么要用 python 来做这种事,我回到“高兴咋地”也不是不可以,总之好奇有没有好的解决方案。逛了一圈下来,总体上来说,python 图形界面有以下几个可行度比较高的解决方案。

    1. pyside

    为什么要把它写第一个呢?因为已经接触过 Qt,所以,总体来讲,感觉它更亲一点。没错,它就是 pyQt 的 LGPL 版本(Qt官方的介绍是,Python for Qt)。

    这个框架最早是由 Nokia 的芒果团队做完的,但是,众所周知的原因,这个团队已经消失了。目前从找到的资料来看,Qt 重新接管了它的开发工作,而且处于活跃状态。但是也不见有人推广啊。。。据说,Matplotlib,PhotoGrabber,Wing IDE,Lucas Chess,Fminer都是用 pyside 来做的,貌似很好用的样子(别问我他们是干嘛的,我是 copy 来的)。

    Nokia 的团队开发的哟!是为了手机开发的哟!那自然天然的支持 Qt Mobile Interface 了。

    它的主页:http://qt-project.org/wiki/PySide/

    这两位兄台对 pyside 做了不错的介绍:

    1) http://blog.sina.com.cn/s/blog_62c832270101dca6.html

    2)http://www.cnblogs.com/goodhacker/p/3984377.html

    2. tkInter

    这是 python 做的 tk/tcl 的壳。tk/tcl 有着广泛的应用,据说用户群体很庞大。而且, tcl8 以后,用它做出来的 App 已经可以具备系统原生的效果了,不再是那种丑丑的界面。

    这个是 python 官方承认的标准 GUI 方案(官方说 “de-facto standard“,执行上的标准,我们还没承认?),资料也比较多,自行了解吧,这里只做备忘。

    总体感觉不大好,虽然说也支持多种平台,但是还是呵呵了。

    主页:https://wiki.python.org/moin/TkInter/

    3. wxPython

    wxWidget 的 python 版本。wxWidget 的知名度也就不必介绍了,似乎 wxPython 也比 tkinter 更受欢迎。wxPython 的官方站更是吊炸天的挂着一句“Why the hell hasn't wxPython become the standard GUI for Python yet?”。

    tkinter 都没兴趣了解, wxWidget 也就被呵呵了。不过做小三能做这么有名,也自然有过人之处,自然不能榜上无名。

    主页:http://www.wxpython.org

    十. 图形界面(GUI)设计1.图形界面设计基础

    早先程序使用最简单的输入输出方式,用户在键盘输入数据,程序将信息输出在屏幕上.现代程序要求使用图形用户界面(Graphical User Interface,GUI),界面中有菜单.按钮等,用户通过鼠 ...

    十. 图形界面(GUI)设计3.标签、按钮和按钮事件

    标签和按钮也许是图形界面中最常见的两种组件,按钮又总是与激发动作事件有关. 标签 标签(JLabel)是最简单的Swing组件.标签对象的作用是对位于其后的界面组件作说明.可以设置标签的属性,即前景色 ...

    十. 图形界面(GUI)设计2.框架窗口

    窗口是GUI编程的基础,小应用程序或图形界面的应用程序的可视组件都放在窗口中,在GUI中,窗口是用户屏幕的一部分,起着在屏幕中一个小屏幕的作用.有以下三种窗口: Applet窗口:Applet类管理这 ...

    十. 图形界面(GUI)设计6.文本框和文本区

    在图形界面中,文本框和文本区是用于信息输入输出的组件. 文本框 文本框(JTextField)是界面中用于输入和输出一行文本的框.JTextField类用来建立文本框.与文本框相关的接口是Action ...

    十. 图形界面(GUI)设计7.文本框和文本区的输入输出

    在GUI中,常用文本框和文本区实现数据的输入和输出.如果采用文本区输入,通常另设一个数据输入完成按钮.当数据输入结束时,点击这个按钮.事件处理程序利用getText()方法从文本区中读取字符串信息.对 ...

    十. 图形界面(GUI)设计5.布局设计

    在界面设计中,一个容器要放置许多组件,为了美观,为组件安排在容器中的位置,这就是布局设计.java.awt中定义了多种布局类,每种布局类对应一种布局的策略.常用的有以下布局类: FlowLayout, ...

    十. 图形界面(GUI)设计12.滚动条

    滚动条(JScrollBar)也称为滑块,用来表示一个相对值,该值代表指定范围内的一个整数.例如,用Word编辑文档时,编辑窗右边的滑块对应当前编辑位置在整个文档中的相对位置,可以通过移动选择新的编辑 ...

    十. 图形界面(GUI)设计11.对话框

    对话框是为了人机对话过程提供交互模式的工具.应用程序通过对话框,或给用户提供信息,或从用户获得信息.对话框是一个临时窗口,可以在其中放置用于得到用户输入的控件.在Swing中,有两个对话框类,它们是J ...

    十. 图形界面(GUI)设计10.菜单

    有两种类型的菜单:下拉式菜单和弹出式菜单.本章只讨论下拉式菜单编程方法.菜单与JComboBox和JCheckBox不同,它们在界面中是一直可见的.菜单与JComboBox的相同之处是每次只可选择一个 ...

    十. 图形界面(GUI)设计9.列表和组合框

    列表和组合框是又一类供用户选择的界面组件,用于在一组选择项目选择,组合框还可以输入新的选择. 列表 列表(JList)在界面中表现为列表框,是JList类或它的子类的对象.程序可以在列表框中加入多个文 ...

    随机推荐

    POJ C Looooops

    Description A Compiler Mystery: We are given a C-language style for loop of type for (variable = A; ...

    HDU 2082 找单词 --生成函数

    跟上题是一个思路:http://www.cnblogs.com/whatbeg/p/3728545.html 只不过是上一题的扩展. 代码: #include #in ...

    NIO组件Selector工作机制详解(下)

    转自:http://blog.csdn.net/haoel/article/details/2224069 五.  迷惑不解 : 为什么要自己消耗资源? 令人不解的是为什么我们的Java的New I/ ...

    C++对象模型5--多继承下的对象模型

    C++对象模型中加入多继承 从单继承可以知道,派生类中只是扩充了基类的虚函数表.如果是多继承的话,又是如何扩充的? 1)        每个基类都有自己的虚表. 2)        子类的成员函数被放 ...

    JAVA数据流再传递

    有一个filter类,在请求进入的时候读取了URL信息,并且读取了requestBod中的参数信息,那么在请求到达实际的控制层时,入参信息是拿不到的,对这种情况就需要数据流做再传递处理. 处理原理:使 ...

    Android 数据存储01之SharedPreferences

    Android 数据存储01之SharedPreferences 版本 修改内容 日期 修改人 V1.0 原始版本 2013/2/20 skywang 1 SharedPreferences概括 Sh ...

    fast协议解读

    目录 背景 fast协议特征 fast协议解读 背景 股票行情一般传输的数据类型为: int / long / float /double / string 来表示行情价格成交量之类的数据. 正常传输 ...

    《Algorithm算法》笔记:元素排序(2)——希尔排序

    笔记:元素排序(2)——希尔排序 Algorithm算法笔记元素排序2希尔排序 希尔排序思想 为什么是插入排序 h的确定方法 希尔排序的特点 代码 有关排序的介绍 ...

    mysql状态分析之show global status

    这里整理下mysql global status的相关命令,在计算监控数据的时候需要用到 一.慢查询 show variables like '%slow%'; +------------------ ...

    删除Android自带的系统软件注意事项

    教程类 知识分享 [转]好多童鞋在ROOT手机后,大刀阔斧的就开始砍系统里面的东西,有些事删不得的,删除错了就成砖头了! 以下是对照表: 注意:打*号的千万别删,打-号的是建议删的(大多要穿墙才能 ...

    展开全文
  • 对 为什么python 不是以为他好做游戏或者什么,我上课的神经网络方面的大作业有得用python,然后简单看了看,python也能搞界面,所以顺便学学python。 也非总结,自己记录一下,可能比较混乱。 其中很多是从网上...

    胡诌一下

    感觉现在游戏不好玩,自己写写玩玩,如果有人看欢迎讨论指点。
    非计算机专业,只学了基础c,和简单的数据结构与算法。对 为什么选python 不是以为他好做游戏或者什么,我上课的神经网络方面的大作业有得用python,然后简单看了看,python也能搞界面,所以顺便学学python。
    也非总结,自己记录一下,可能比较混乱。

    其中很多是从网上大佬学的,我尽量备注来源,然后我没注意时间戳,所以如果摘抄有原作搞错,告诉我,我改。

    大概脉络

    对不对不知道 试试咯
    不懂架构和美工,不过个人感觉
    1.界面图像 tkinter
    2.鼠标、键盘操作
    3.数据存储、读取
    4.数据运算
    5.功能操作
    都搞完,应该差不多单机能看看。
    先这样

    界面显示

    tkinter

    本来想先看看有啥,然后看了一眼Python 3.9.2 文档,太多了。先放弃,碰到问题再看,不然我觉得,不知道那年才能做出哪怕一丢丢东西。平常看不到成果,一定会没有动力。
    (Python 3.9.2 文档https://docs.python.org/zh-cn/3/)

    看的界面Python GUI
    ———————————tkinter窗口
    (这个老哥的还行 https://www.cnblogs.com/shwee/p/9427975.html)
    边看边试试,不懂框架,以后慢慢搞
    (然后这个写的也挺详细,就是tkinter窗口的内容,可以参考https://blog.csdn.net/weixin_42272768/article/list/5?t=1)
    建个文件夹先,虽然不懂框架
    这里列了一点儿:

    import time  # 引入time模块
    
    import tkinter as tk  # 使用Tkinter前需要先导入
    
    import random
    print (random.randint(6,8))
    
    
    # 第1步,实例化object,建立窗口window
    window = tk.Tk()
     
    # 第2步,给窗口的可视化起名字
    window.title('My Window')
     
    def get_screen_size(win):
        return win.winfo_screenwidth(),win.winfo_screenheight()
    def center_window(window, width, height):
        screenwidth = window.winfo_screenwidth()
        screenheight = window.winfo_screenheight()
        size = '%dx%d+%d+%d' % (width, height, (screenwidth - width)/2, (screenheight - height)/2)
        window.geometry(size)
    
    
    center_window(window, 500, 200)
    
    
    # 第4步,在图形界面上创建 500 * 200 大小的画布并放置各种元素
    canvas = tk.Canvas(window, bg='green', height=200, width=500)
    canvas.pack()
    
    # 说明图片位置,并导入图片到画布上
    image_file = tk.PhotoImage(file='c:/Users/扬/Desktop/game_py/pic.gif')  # 图片位置(相对路径,与.py文件同一文件夹下,也可以用绝对路径,需要给定图片具体绝对路径)
    image = canvas.create_image(250, 0, anchor='n',image=image_file)        # 图片锚定点(n图片顶端的中间点位置)放在画布(250,0)坐标处
    
    # 定义多边形参数,然后在画布上画出指定图形
    x0, y0, x1, y1 = 100, 100, 150, 150
    line = canvas.create_line(x0-50, y0-50, x1-50, y1-50)                   # 画直线
    oval = canvas.create_oval(10, 100, 0, 0, fill='yellow')  # 画圆 用黄色填充
    arc = canvas.create_arc(x0, y0+50, x1, y1+50, start=0, extent=180)      # 画扇形 从0度打开收到180度结束
    rect = canvas.create_rectangle(330, 30, 330+20, 30+20)                  # 画矩形正方形
    canvas.pack()
     
    
    
    # 第5步,定义一个按钮用来移动指定图形的在画布上的位置
    def moveit():
    
        canvas.move(image, 20, 20) # 移动图形,按每次(x=20, y=20)步长进行移动
    
    #删除原理的图像 随机生成新的
    def new_ova():
        global oval
        canvas.delete(oval)
        a=random.randint(10,200)
        b=random.randint(10,500)
        print(a,b)
        oval = canvas.create_oval(a, b,a+10,b+10, fill='yellow')  # 画圆矩形内 点(a,b)到(a+10,b+10)用黄色填充
        
    
     
    # 第6步,触发函数,用来一定指定图形
    #靠下左对齐
    bq1 = tk.Button(window, text='move item',command=moveit).pack(side=tk.LEFT)
    bq2 = tk.Button(window, text='new oval',command=new_ova).pack(side=tk.LEFT)
     
    
    
    # 第7步,主窗口循环显示
    window.mainloop()
    

    运行示意
    move item 是海贼王定向移动。
    new oval是小黄点,固定大小,在屏幕上随机生成,(想贪吃蛇了)。这块我想了半天,不知道咋刷新界面,试了大循环里套界面,但是那种是关一个界面新生成一个界面,很怪异。改成了,把原先图像的删了【.delete()】,再画。
    这里得注意一点,就是python里的变量名和c的指针不太一样,def 定义函数或者说功能还是说接口,我也不知道啥,反正不影响用,得是全局变量,或者其他方式,我用的global oval。
    然后用.create_oval(a, b,a+10,b+10, fill='yellow') # 画圆矩形内 点(a,b)到(a+10,b+10)用黄色填充画图得注意,贼奇葩,反正实验了半天才明白,他是两个点,选个长方形,然后自动在里面画个最大的图像。我可是傻乎乎的改了半个多小时参数,才搞明白,那会儿咋没想着百度一下。。。。

    自我烦恼于界面刷新

    想做个点击类的,随时间变的,改数字什么的。
    (菜鸟的时间 https://www.runoob.com/python/python-date-time.html)

    import time  # 引入time模块
    
    def tim_on():
        #开始的时间点
        ticks = time.time()
        #已过时间
        tim_o = 0.  
        i_1 = 0
        while(True):
            time.sleep(1)  #推迟调用线程的运行,1秒。 防止不停的没用计算
            tim_o = time.time() - ticks
            i_1=1+i_1
            if i_1 > 1000: #上限 这里也可以加一个对比,tim_o和 i_1的,因为本身运算需要时间,一次延后一秒,误差累积。先备着,不敢定用不用。
                break
    ticks = time.time()
    print ("当前时间戳为:", ticks)
    
    结果当前时间戳为: 1459994552.51
    

    简单试了,把窗口生成在循环里,是每次生成一个新窗口,不是刷新窗口。
    试了试把循环放在窗口里,也是怪怪的,没成功。或许应该用线程,加中断?
    或者监听器???不知道python的线程这块是咋写的,先空下吧。

    Entry的简单代码示例 获取数据

    from tkinter import *
    
    root = Tk()
    
    Label(root,text="aaa").grid(row=0,column=0)
    Label(root,text="bbb").grid(row=1,column=0)
    
    e1 = Entry(root)
    e2 = Entry(root)
    e1.grid(row=0,column=1,padx=10,pady=5)
    e2.grid(row=1,column=1,padx=10,pady=5)
    
    
    on_hite1 = ''
    
    def show():
        global on_hite1
        on_hite1 = e1.get()
        print("aaa:%s" %on_hite1)
        print("bbb:%s" %e2.get())
        e1.delete(0, "end")
        e2.delete(0, "end")
    
    Button(root,text = "获取",width = 10,command = show)\
                     .grid(row = 3,column = 0,sticky = W,padx =10,pady =5)
    
    
    
    mainloop()
    

    反正我感觉避不开类似全局变量的东西,来交换数据
    在这里插入图片描述

    messageBox窗口部件

    用户登录界面 这个蛮多的,我不记得我从哪里看的了 抱歉

    import tkinter as tk
    from tkinter import messagebox
    
    class verification_window(tk.Frame):
    
        # 调用时初始化
        def __init__(self):
            global root
            root = tk.Tk()
            # 窗口大小设置为150x150
            root.geometry('150x150+885+465')
    
       #     root.resizable(0, 0)  # 窗口大小固定
    
            super().__init__()
            self.username = tk.StringVar()
            self.password = tk.StringVar()
            self.pack()
            self.main_window()
    
            root.mainloop()
    
        # 窗口布局
        def main_window(self):
            global root
            username_label=tk.Label(root,text='Username:',font=('Arial',12)).place(x=35,y=10)
            username_input = tk.StringVar
            username_entry=tk.Entry(root,textvariable=self.username).place(x=2,y=35)
    
            password_label=tk.Label(root,text='Password:',font=('Arial',12)).place(x=35,y=58)
            password_input = tk.StringVar
            password_entry=tk.Entry(root,textvariable=self.password,show='*').place(x=2,y=83)
    
            # 在按下CONFIRM按钮时调用验证函数
            conformation_button = tk.Button(root,text='CONFIRM',command=self.verification,fg='white',bg='black', activeforeground='white', activebackground='navy',width=8,height=1)
            conformation_button.place(x=6,y=112)
    
            quit_button = tk.Button(root, text='QUIT', command=root.quit, fg='white', bg='black', activeforeground='white', activebackground='red', width=8, height=1)
            quit_button.place(x=78,y=112)
    
        # 验证函数
        def verification(self):
            global root
    
            # 检查用户名和密码 是否在user_dict字典中
            user_dict = {987654321:112233,123456789:332211}
            if user_dict.get(int(self.username.get())) == int(self.password.get()):
                # 成功提醒
                messagebox.showinfo(title='Correct', message=f'{int(self.username.get())}, welcome!')  
    
            else:
                messagebox.showerror(title='Wrong inputs!', message='Please enter correct username or password.')  # 错误提醒
    
    if __name__ == '__main__':
        verification_window()
    

    实例

    搞到这里,大概,半天过去了。(因为环境什么的,本身有,主要是花时间找东西看,然后实验,再加上自己是傻的,绕了半天)

    贪吃蛇????

    刚刚路上去吃饭的时候突然想,为啥我那会想搞刷新页面,不就是为了动态起来?那贪吃蛇或者其他什么游戏,不就是动的?那他们咋用的,我也用不就行了!

    然后瞄了瞄,感觉没啥进度,什么pygame,为主,然后用基础库的也是为了写贪吃蛇而写的,感觉和我想的有偏差。不过看见一个好玩的函数


    python.bind


    尚未实践
    规则:窗体对象.bind(事件类型,回调函数)
    这个好像还能与c++互相调用??!!
    还有个bind_all
    大概用法:
    canvas.bind_all("",echo_event)

    <Button-1>   :鼠标左击事件 
    <Button-2>   :鼠标中击事件 
    <Button-3>   :鼠标右击事件
    <Double-Button-1>   :双击事件
    <Triple-Button-1>   :三击事件
    
    <KeyPress-A>表示A键被按下
    <Control-V>表示按下的是Ctrl和V键
    <F1>表示按下的是F1键,对于Fn系列的,都可以随便换
    

    简单的人机交互部分 键盘鼠标

    python 实时捕获按键处理 (跟随上面的实践)

    curses — 终端字符单元显示的处理

    3.9.2 Python 标准库 » 通用操作系统服务 »
    https://docs.python.org/zh-cn/3.9/library/curses.html
    这里有更多更细的内容。不过暂时没有用到,以后会 先打个标记。

    关于bind的具体实践内容

    def echo_event(evt):
        #打印键盘事件
        if evt.type == "2":
            print("键盘:%s" % evt.keysym)
        #打印鼠标操作
        if evt.type == "4":
            print("鼠标: %s" % evt.num)
        #
        if evt.keysym == 'A':
            canvas.move(image, 20, 20) # 移动图形,按每次(x=20, y=20)步长进行移动
    
        if evt.num == 1:
            canvas.move(image, 20, 20) # 移动图形,按每次(x=20, y=20)步长进行移动
        print(evt.keysym)
        print(evt.num)
        print(evt.type)
    
    #键盘事件
    canvas.bind_all("<KeyPress>",echo_event)
    #如果绑定指定的键盘,则"<Key>" 或者"<KeyPress>"都可以,具体到指定键的话后面加入下划线和指定的键就好了,如:绑定小写字母t和Left键
    canvas.bind_all("<KeyPress-t>",echo_event)
    canvas.bind_all("<KeyPress-Left>",echo_event)
    #鼠标事件
    canvas.bind_all("<Double-Button-1>",echo_event)
    canvas.bind_all("<Button-1>",echo_event)
    canvas.bind_all("<Button-2>",echo_event)
    canvas.bind_all("<Button-3>",echo_event)
    

    这里暂时不知道原因,但是结果如下:
    用法和上述相同。
    然后返回值,事件类型上(.type)键盘是字符2,鼠标是4。 ‘A’和 ‘a’不同。
    键盘数据无num值,均为keysym,特殊符号不知,未实验。
    然后,鼠标无keysym值,均为num,判断相等时是数值型的1,2,3。

    如上述代码,是在之前的那个海贼王的代码中加即可。可以达到使其移动的效果。

    def echo_event1():
            canvas.move(image, 0, 20) # 移动图形,按每次(0, -20)步长进行移动
    
    #鼠标事件
    
    canvas.bind_all("<Button-1>",echo_event1)
    

    这种直接触发 也可以

    展开全文
  • Python 图形界面(GUI)设计

    万次阅读 2018-11-05 20:02:31
    不要问我为什么 Python这种事,我回到“高兴咋地”也不是不可以,总之好奇有没有的解决方案。逛了一圈下来,总体上来说,Python 图形界面有以下几个可行度比较高的解决方案。   1. pyside 为什么要把...

     

    不要问我为什么要用 Python 来做这种事,我回到“高兴咋地”也不是不可以,总之好奇有没有好的解决方案。逛了一圈下来,总体上来说,Python 图形界面有以下几个可行度比较高的解决方案。

     

    1. pyside

    为什么要把它写第一个呢?因为已经接触过 Qt,所以,总体来讲,感觉它更亲一点。没错,它就是 pyQt 的 LGPL 版本(Qt官方的介绍是,Python for Qt)。

    这个框架最早是由 Nokia 的芒果团队做完的,但是,众所周知的原因,这个团队已经消失了。目前从找到的资料来看,Qt 重新接管了它的开发工作,而且处于活跃状态。但是也不见有人推广啊。。。据说,Matplotlib,PhotoGrabber,Wing IDE,Lucas Chess,Fminer都是用 pyside 来做的,貌似很好用的样子(别问我他们是干嘛的,我是 copy 来的)。

    Nokia 的团队开发的哟!是为了手机开发的哟!那自然天然的支持 Qt Mobile Interface 了。

    它的主页:http://qt-project.org/wiki/PySide/

    这两位兄台对 pyside 做了不错的介绍:

    1) http://blog.sina.com.cn/s/blog_62c832270101dca6.html

    2)http://www.cnblogs.com/goodhacker/p/3984377.html

     

    2. tkInter

    这是 Python 做的 tk/tcl 的壳。tk/tcl 有着广泛的应用,据说用户群体很庞大。而且, tcl8 以后,用它做出来的 App 已经可以具备系统原生的效果了,不再是那种丑丑的界面。

    这个是 Python 官方承认的标准 GUI 方案(官方说 “de-facto standard“,执行上的标准,我们还没承认?),资料也比较多,自行了解吧,这里只做备忘。

    总体感觉不大好,虽然说也支持多种平台,但是还是呵呵了。

    主页:https://wiki.python.org/moin/TkInter/

     

    3. PyGTK

    偶然发现,LinuxMint 的好多页面实现,都用的是 PyGTK。操作系统级别的实现,应该是会比较在乎效率的?所以,对 PyGTK 做了一下简单了解。

    PyGTK 的所有可是功能都是调用 GTK+ library 来实现的,所以,据官方介绍, PyGTK 是可以开发全功能的 GUI 程序的。而且, GTK 和 Python 都是跨平台的缘故,PyGTK 无需任何修改,就可以随意在任意操作系统上运行(安装过 GTK 库的话)。

    此外,因为 PyGTK 的主要设计目标是使用简单和快速开发(ease of use and rapid prototyping)。此外,PyGTK 还有一流的处理本地化语言的独特功能。

    PyGTK 使用 LGPL license。

    项目主页:http://www.pygtk.org/

     

    4. wxPython

    wxWidget 的 Python 版本。wxWidget 的知名度也就不必介绍了,似乎 wxPython 也比 tkinter 更受欢迎。wxPython 的官方站更是吊炸天的挂着一句“Why the hell hasn't wxPython become the standard GUI for Python yet?”(现已消失,怂了?)。

    tkinter 都没兴趣了解, wxWidget 也就被呵呵了。不过做小三能做这么有名,也自然有过人之处,自然不能榜上无名。

    主页:http://www.wxpython.org

    转载于

    展开全文
  • python图形界面(GUI)设计

    千次阅读 2015-11-15 15:58:44
    不要问我为什么 python这种事,我回到“高兴咋地”也不是不可以,总之好奇有没有的解决方案。逛了一圈下来,总体上来说,python 图形界面有以下几个可行度比较高的解决方案。   1. pyside 为什么要把...
    

    不要问我为什么要用 python 来做这种事,我回到“高兴咋地”也不是不可以,总之好奇有没有好的解决方案。逛了一圈下来,总体上来说,python 图形界面有以下几个可行度比较高的解决方案。

     

    1. pyside

    为什么要把它写第一个呢?因为已经接触过 Qt,所以,总体来讲,感觉它更亲一点。没错,它就是 pyQt 的 LGPL 版本(Qt官方的介绍是,Python for Qt)。

    这个框架最早是由 Nokia 的芒果团队做完的,但是,众所周知的原因,这个团队已经消失了。目前从找到的资料来看,Qt 重新接管了它的开发工作,而且处于活跃状态。但是也不见有人推广啊。。。据说,Matplotlib,PhotoGrabber,Wing IDE,Lucas Chess,Fminer都是用 pyside 来做的,貌似很好用的样子(别问我他们是干嘛的,我是 copy 来的)。

    Nokia 的团队开发的哟!是为了手机开发的哟!那自然天然的支持 Qt Mobile Interface 了。

    它的主页:http://qt-project.org/wiki/PySide/

    这两位兄台对 pyside 做了不错的介绍:

    1) http://blog.sina.com.cn/s/blog_62c832270101dca6.html

    2)http://www.cnblogs.com/goodhacker/p/3984377.html

     

    2. tkInter

    这是 python 做的 tk/tcl 的壳。tk/tcl 有着广泛的应用,据说用户群体很庞大。而且, tcl8 以后,用它做出来的 App 已经可以具备系统原生的效果了,不再是那种丑丑的界面。

    这个是 python 官方承认的标准 GUI 方案(官方说 “de-facto standard“,执行上的标准,我们还没承认?),资料也比较多,自行了解吧,这里只做备忘。

    总体感觉不大好,虽然说也支持多种平台,但是还是呵呵了。

    主页:https://wiki.python.org/moin/TkInter/

     

    3. wxPython

    wxWidget 的 python 版本。wxWidget 的知名度也就不必介绍了,似乎 wxPython 也比 tkinter 更受欢迎。wxPython 的官方站更是吊炸天的挂着一句“Why the hell hasn't wxPython become the standard GUI for Python yet?”。

    tkinter 都没兴趣了解, wxWidget 也就被呵呵了。不过做小三能做这么有名,也自然有过人之处,自然不能榜上无名。

    主页:http://www.wxpython.org

    ——————
    无论在哪里做什么,只要坚持服务、创新、创造价值,其他的东西自然都会来的。

    FROM:http://www.cnblogs.com/pied/p/4373600.html
    展开全文
  • Python 2.5

    2007-05-28 12:33:42
    还有一些有趣的比如说,象下面的一个比较处理,C语言为: <br/> <br/>if (2 <br/>用Python可以表示为 <br/>if (2 <br/> <br/>什么是Zope? <br/> <br/>Zope是一个开放源代码...
  • python新手误区...

    2020-09-18 16:45:42
    a =1 while a <= 9: b = 1 while b <= a: print("%d*%d=%d"%(a,b,a*b),end=' ') b+=1 pass a+=1 ...程序执行的路径, 经常容易被一个tab符号迷惑… ...想找大佬咨询用什么做界面比较好? ...
  • 应用案例 - 用户身份验证 / 英制单位与公制单位互换 / 掷骰子决定做什么 / 百分制成绩转等级制 / 分段函数求值 / 输入三条边的长度如果能构成三角形就计算周长和面积 Day04 - 循环结构 循环结构的应用场景 - ...
  • 想自己写一个选课助手,功能已经用python实现,现在需要做界面。 目前用pyqt写的界面,但是打包后的程序太大,有100MB左右,且包含 多个文件夹和dll文件,看起来不舒服,双击后打开的速度也很慢。 用什么语言能够...
  • 其实网上有很多压缩工具…只是自己根想练手试试…也是系统性的一个尝试…不然学了python不知道干什么,就知道爬爬爬… 不要界面的话其实 40-50行代码就搞定了… 但是我想写一个成品…可以直接拿出来的…所以…说...
  • 我们希望测试逻辑能够用Python编写,能够在电脑上运行的时候就控制手机。这里要非常感谢 Xiaocong He (@xiaocong),他将这个想法实现了出来(见xiaocong/uiautomator),原理是在手机上运行了一个http rpc服务,将...
  • 并且开始它编写图形界面的应用程序。而在Smalltalk-80这个版本的时候,一位叫Trygve Reenskaug的工程师设计了MVC图形应用程序的架构模式,极大地降低了图形应用程序的管理难度。而在四人帮(GoF...
  • py3学习笔记0(入坑)

    2016-09-10 23:14:00
    什么Python?  Python是一种面向对象、解释型计算机程序设计语言,语法简洁,具有很多强大的库。它也被称为胶水语言,能够把其他语言制作的库轻松地粘合在一起。现常用于科学计算,界面设计,网络通信等。 ...
  • VMware虚拟机端口映射

    2020-08-15 18:32:59
    在我学习python的时候需要用到端口映射,应为我的python解释器是运行在虚拟机上的linux系统上的,其实我也不知道这样的好处是什么,但是当初学的时候老师是这么教的,我回忆一下,貌似是说这样不会污染本地操作...
  • 软件工程教程

    热门讨论 2012-07-06 23:10:29
    用例只描述参与者和系统在交互过程中什么,并不描述怎么例图 关联关系 例图 泛化关系 例图 泛化关系 例图 例图 例图 用例用于什么情况? 不知道什么情况不用用例 如果没有用到用例,...
  • 如果手机的时候, 就那边开启个python插件. 当然总归比较蛋疼.. 以上是目前想起来比较明显的问题和可能的建议, 再次感谢开源和维护~ <p>PS: 日志的话没有Xposed很难输出...或者有什么简单办法输出运行日志?...
  • CPython无疑是一个比较好的选择。 这篇教程是基于 https://cython.readthedocs.io/en/latest/src/tutorial/cython_tutorial.html 同时也参考了 http://docs.cython.org/en/latest/ 但我会在这个的基础上一些...
  • 基于python 开发,也得 python file.py 来安装 一般软件包都有README和INSTALL 或者 DOC 文档,看文档安装; 2)有些安装程序是脚本型的调用;要 #sh 文件名 比如NVdia驱动的安装就是这样的; [beinan@...
  • sphinx中文语音训练手册

    热门讨论 2013-04-29 10:41:01
    inFile是准备的领域内语料文本,例如berginput.txt里关于图形用户界面和语音朗读、计算机方面的文本。 txtFile是将输出用于sphinx进行统计的语料文件 tranFile是sphinx中的transcription文件,它告诉sphinx...
  • 对于这类io型密集的扫描模型,后端使用多线程就比较适用,但是由于phantomjs你可以理解为一个无界面的浏览器,在加载的时候,其缺陷也比较明显,比较吃内存,它来发包自然不像requests库轻量。 编码脚本 由于基础...
  • 测试培训教材

    2014-04-01 12:10:48
    The VAPI-XP testing tool enables you to create new testing scripts using Microsoft VBScript, Microsoft JavaScript (JScript version), PerlScript, and PythonScript, and integrate these scripts into your...
  • 虽然不一定需要懂得Java,但Java 可以帮助你更地了解异常、学会如何编译源码以及使用一些流行的客户端。本书中的很多例子都是Java 写成的。尽管如此,因为Cassandra 使用了语言中立的RPC 接口,所以你可以使用...
  • 比较麻烦,后面就想到Perl或Python来写,百度了一番都说Perl语言运行速度快,我在Open-WRT上看了下Perl的包也挺多,然后就写了个测试脚本,就是压缩同步数据的那段,然后在CentOS上运行测试了下,发现速度比bash快...
  • C++标准库介绍.pdf

    2013-08-30 13:51:41
     Qt是Trolltech公司个多平台C图形用户界面应用框架它提供给应用开发者建立艺术级图形用户界面所需所 功能Qt是完全面向对象很容易扩展并且允许真正地组件编程自从1996年早些时候Qt进入商业领域它已经成 为全世界...

空空如也

空空如也

1 2
收藏数 38
精华内容 15
关键字:

python用什么做界面比较好

python 订阅