PyGTK 3:带有Python + GTK + 3的迷你GUI教程

我们将使用PyGTK 3.0编写一个小程序,该程序也适用于PyGTK 3.4。 这个小小的GUI将教您如何将程序分为两个或更多文件。

您可以在新的PyGTK 3上访问SebastianPölsterl的教程,这是新的教程,我留下了链接:

http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html

这是塞巴斯蒂安的博客。

http://k-d-w.org/node/88

塞巴斯蒂安(Sebastian)对本教程的批评是,它没有讲授如何将程序分为多个部分或几个文件,如果他展示了如何使用PyGTK 3的示例,那就太好了。

所有大型程序和复杂程序都分为许多文件,并且文件甚至放置在其他目录中,即它们位于不同的文件夹中。

让我们从一个小例子开始:

这是一个名为gui.py的文件中的编写代码。 我们打开Gedit文本编辑器或最常用的编辑器,我们复制下面的代码并将其保存为gui.py

从gi.repository导入Gtk类gui():def on_open_clicked(自身,按钮):打印“ \”打开\“单击按钮” def on_close_clicked(自身,按钮):打印“关闭应用程序” Gtk.main_quit()def __init__ (self):self.window = Gtk.Window()self.window.connect('delete-event',Gtk.main_quit)self.box = Gtk.Box()self.window.add(self.box)self。 button = Gtk.Button(label ='Open')self.button.connect(“ clicked”,self.on_open_clicked)self.box.pack_start(self.button,True,True,0)self.button = Gtk.Button( label ='Close')self.button.connect(“ clicked”,self.on_close_clicked)self.box.pack_start(self.button,True,True,0)self.window.show_all()Gtk.main()如果__name__ =='__main__':gui = gui()

前冲

def on_open_clicked(自己,按钮):打印“ \”打开\“单击按钮”

单击打开按钮后,该功能会在终端中激活。 激活它的信号是:

self.button.connect(“ clicked”,self.on_open_clicked)def on_close_clicked(self,button):打印“关闭应用程序” Gtk.main_quit()

当我们单击关闭按钮时,将激活该功能。

关闭我们运行的程序。

激活它的信号是

gi.repository import Gtk中的self.button.connect(“ clicked”,self.on_close_clicked)###我们调用PyGTK库###类gui():###名为gui的类定义是主类# ##

小部件的声明:小部件是由我们使用的GUI库预先定义的程序。 例如,小部件是按钮,窗口,框等。 这些是我们在程序中声明的小部件。

self.window = Gtk.Window()###窗口### self.box = Gtk.Box()### box #### self.button = Gtk.Button(label ='Open')### #打开按钮#### self.button = Gtk.Button(label ='Close')####关闭按钮#### self.window.add(self.box)####该盒子包含在名为window #### self.box.pack_start的窗口(self.button,True,True,0)#####该按钮包含在名为box ### self.window.show_all()##的框中#我们显示整个窗口### gui = gui()###创建gui对象####

我们将程序放在桌面上的简单文件夹中

叔

我们用终端打开文件夹,在我的情况下,我使用Linux Mint 14中的Nemo。

关闭

为了进行编译,我们在终端python gui.py中放入

看到图片。

终端

现在我们可以看到使用PyGTK 3库创建的小程序或新的小部件

这是一个带有两个按钮的简单窗口。

Untitled

现在,我们将程序分为三个部分,然后剩下三个文件的代码。

第一个gui.py文件

从gi.repository导入Gtk从销毁导入从io导入io类gui(destroy,io):def __init __(self):self.window = Gtk.Window()self.window.connect('delete-event',Gtk .main_quit)self.box = Gtk.Box()self.window.add(self.box)self.button = Gtk.Button(label ='Open')self.button.connect(“ clicked”,self.on_open_clicked) self.box.pack_start(self.button,True,True,0)self.button = Gtk.Button(label ='Close')self.button.connect(“ clicked”,self.on_close_clicked)self.box.pack_start( self.button,True,True,0)self.window.show_all()Gtk.main()如果__name__ =='__main__':gui = gui()

第二个io.py文件

io类:def on_open_clicked(自身,按钮):打印“ \”打开\“单击了按钮”

第三个文件destroy.py

从gi.repository导入Gtk类销毁:def on_close_clicked(自身,按钮):打印“关闭应用程序” Gtk.main_quit()

在本例中,我们将这三个文件放在同一文件夹中,该文件夹称为简单划分。

简单

编译三个文件。 我们用终端打开文件夹,然后将其放回终端

python gui.py

对gui.py代码的修改

从destroy import destroy ###语句导入我们的文件destroy.py ###从io import io ###语句导入我们的文件io.py ### class gui(destroy,io):####到class主要我们添加子类destroy和io ####

你可以看到这句话

def on_open_clicked(自己,按钮):打印“ \”打开\“单击按钮”

它不在gui.py中,而是在io.py文件中

句子

def on_close_clicked(自己,按钮):

打印“关闭申请”
Gtk.main_quit()

它位于destroy.py文件中

因此,我们可以将一个程序同时划分为多个文件,这些文件位于不同的目录中。

另一方面,Python是自由软件的支柱,它适用于GTK 3.6 /3.8,其名称为PyGTK。 Python对KDE的改编称为PyQT。

Python适用于Mac OS和WINDOWS。

我希望这个PyGTK3迷你教程对您有所帮助。 他们可以提出所有想要的建设性批评。

我也知道一些Gtk 3.4 /3.6和Vala GTK 3.4 / 3.6。

http://www.youtube.com/watch?v=9ckRn_sx8CE

最后,KDE用户为没有为KDE编写迷你教程而道歉。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   腐烂87

    在kde中,我更喜欢使用kdevelop(我认为这就是所谓的名称)来轻松创建gui,但是我仍然很难找到使其发生的过程x事情:'(

  2.   st0rmt4il

    非常适合使用Python的我们这些人:D!

    的问候!

  3.   保罗

    您好,我已经关注这个社区很长时间了,我不确定这是我第一次发表评论还是在before之前发表过评论(我不太愿意在网上写评论)。 事实是,我这样做是为了向Elav和KZKG ^ Gaara提出建议,我认为添加一个用于语法着色的插件是一个好主意,因为最近我看到了更多使用不同编程语言编写代码的帖子。 我知道有很多插件,但是由于我不是wordpress用户,所以我没有尝试过任何插件,所以我让您考虑一下请求的可行性。 我借此机会向其他读者询问他们对此想法的看法,因为我知道有些人更喜欢在没有任何装饰的情况下阅读代码。 我对此表示抱歉,并由于某种原因被拒绝,因为我不记得看到有关该主题的讨论。

    1.    马里亚诺高迪克斯

      事实是,我想选择对语法进行着色以突出显示编程语言的代码。
      这将帮助想要学习编程语言的用户。

      但是,我对论坛也很满意,我们可以一起讨论和学习。

      1.    埃利奥时间3000

        GNU Emacs更舒适,因为至少您必须选择要使用的编程语言检查器(如果您不希望处理器拥有更多重量,请使用GNU Nano并尽享极简主义)。

        1.    马里亚诺高迪克斯

          Elio 我们正在谈论 WordPress。在博客上实现 Desde Linux。它没有为帖子字母着色的功能。

          1.    埃利奥时间3000

            哦,对不起。

        2.    潘德夫92

          Naaa emacs对于拥有84根手指XD ..,普通人,文本伴侣,sublimetext或记事本++ xd的人来说非常舒适

          1.    埃利奥时间3000

            令人难以置信的是您还没有学会打字,这是能够很好地处理GNU Emacs及其键盘快捷键所必需的。 此外,它的GUI使您可以轻松使用其菜单(可以在Windows中使用,但不建议在常规模式下使用命令提示符模式来执行它,这样win32不会抵制您的脚本)。

  4.   卡珀

    非常酷的教程。 但是顺便说一下,python源代码没有编译,它是一种解释语言。

    1.    吉卡德

      可以将其编译为伪代码。 它不是机器语言,而是代表解释器某些内容的字节,但是该过程也称为编译。 从这个意义上讲,可以说已经编译了一些东西。

  5.   ty

    也许最好学习pytgk2,因为Windows可用的最新版本是2.24。 系列3的缺失很明显。 坏话说,gnome破坏了每个新版本中的所有api。

    1.    马里亚诺高迪克斯

      我用GTK 3.4 / 3.6编写了一个样机,事实是它们破坏了您的耐心和头脑,您必须重写代码,现在我明白了Linux Mint人们为什么抱怨GTK和GNOME项目。
      对于MINT的那些人,我同意GTK 2.4。

  6.   卡洛斯

    好的教程和参考。
    由于已经放入了代码,因此只是一个细节,在Python中,缩进是必需的,示例代码中应遵循缩进。

    的问候!

    1.    马里亚诺高迪克斯

      您能解释一下Python中的强制性标识由什么组成吗?我告诉您实话,我从未听说过,我不习惯英语的PyGTK 2/3论坛,也许我忽略了它。

      1.    吉卡德

        在Python中,您不像在C中那样使用键,也不像在Pascal中那样使用开始/结束块,但是通过给代码缩进可以理解一切。 即,块被认为是缩进的。 这是我特别喜欢的功能。 您避免编写键之类的东西。

        1.    潘德夫92

          我只是不喜欢,放置两个小键或一个std :: endl;比查看xd行是否被制表更简单

          1.    费利佩

            :p您的编程老师会为您设置0。 或更糟糕的是,他们会解雇您。 最重要的是代码可读性强

          2.    潘德夫92

            以大括号结尾,它使我对XD的可读性大大提高。

          3.    吉卡德

            认真吗?


            int main(int argc, char *argv[]){program_name = argv[0];while ((argc > 1) && (argv[1][0] == '-')) {switch (argv[1][1]) {case 'v':verbose = 1; break;case 'o':out_file = &argv[1][2];break;case 'l':line_max = atoi(&argv[1][2]);break;default:fprintf(stderr,"Bad option %s\n", argv[1]);usage();}++argv;--argc;} if (argc == 1) {do_file("print.in");} else {while (argc > 1) {do_file(argv[1]);++argv;--argc;}}return (0);}

            你看? 没有缩进,它不是很好理解。 这很容易。 对于更复杂的代码,只有编译器可以理解。 事实是,既然您必须缩进(以便人类理解代码),为什么会多余并使用分隔符? 缩进就足够了,就是这样。

          4.    潘德夫92

            当然,什么都不会被理解,因为您不尊重c / c ++程序的良好编写规则。 您所做的一切对任何事物(例如,将一个函数嵌套在另一个函数内部的另一个函数内部)都有效,那么如果您能够理解,那么我想与您讨论xd。

          5.    潘德夫92

            顺便说一下,通过两种外观,该代码很容易理解xD

          6.    吉卡德

            我这样做的目的是向您显示,即使没有缩进,即使缩进了,也很难理解任何代码。 因此,您有2条规则:缩进并包含定界符。 但这是多余的。 在Python中,此类代码根本不会被解释器接受。 而且您只有一条规则:缩进。 简单。
            但是,嘿,每个人都有自己的品味。

          7.    雅典娜

            两者都很好,可以缩进和不缩进,在我看来我更喜欢分号样式或红宝石样式,类似于python,但缩进不是必需的。

            这是更好理解的方式:P:

            echo'int main(int argc,char * argv []){program_name = argv [0]; while(((argc> 1)&&(argv [1] [0] =='-'))){开关(argv [ 1] [1]){情况'v':详细= 1; break; case'o':out_file =&argv [1] [2]; break; case'l':line_max = atoi(&argv [1] [2]); break;默认值:fprintf(stderr,»错误选项%s \ n»,argv [1]);用法();} ++ argv; –argc;} if(argc == 1){do_file(“ print.in”);}其他{while(argc> 1 ){do_file(argv [1]); ++ argv; –argc;}}返回(0);}'| perl -p -e's / \ {/ {\ n \ t / g; s / \; / \; \ n \ t / g; s / \ t \} / \} / g;'

            问候😀

      2.    吉卡德

        我认为Carlos意味着代码出处没有缩进。 复制和粘贴将无法正常工作。 创建帖子时我不知道标签是否存在 输入语言代码。 如果他们放不存在的话,这将是很好的。

        1.    吉卡德

          我已经看到了问题所在:CODE标记删除了所有空格和制表符(它不应该这样做!!)但是,如果在其上放一个nbsp,则代码看起来不错。 A0以十六进制表示(十月为160),尽管我认为这可能取决于字体(我不知道)。 如果使用它,它会像这样显示:

          def fib(n):
              a, b = 0, 1
              while a < n:
                  print(a)
                  a, b = b, a+b

          在我的测试中,它看起来不错,但是在发布答案时我没有预览(应该有!!!)如果不出来,那不是我的错fault

          1.    马里亚诺高迪克斯

            查看SebastianPölsterl在其PyGTK 3教程中提供的示例,Sebastian不会放置标签。

            范例:

            http://python-gtk-3-tutorial.readthedocs.org/en/latest/entry.html#example

            您可以查看Sebastian的所有教程。

          2.    吉卡德

            我不知道你想表达什么意思。 我的意思是,在这里,在帖子中,无法使用HTML标记“ CODE”,以便您将其作为代码放置,并且可以很容易地缩进。 在您所引用的页面上,如果您查看页面源代码,将会看到它不使用CODE而是使用其他HTML分隔符。
            这不是违反您所输入的代码,而是指出此站点的发布系统中的缺陷。 也许管理员可以解决。
            当我谈论标签时,我显然是在谈论HTML,而不是Python。 无论如何,如果您在Python中不加缩进地放置代码,那将是行不通的。 如果有新手来,并按照本文中显示的代码复制并尝试运行它,则他将失败。 当您是新手时,您可能会感到沮丧。 再说一次,这不是你的错。 在我之前的回答中,我所做的就是提供了一种从用户级别解决问题的方法。

          3.    马里亚诺高迪克斯

            完全正确,我应该上传照片而不是复制代码。
            展示如何在PyGTK 3中正确排序语句。

  7.   费利佩

    要使用python编程,我建议将Eclipse与PyDev插件或Pychar m一起使用

  8.   路易士

    如上所述,这就是我不喜欢python的原因,因为它存在缩进问题。 如我们所见,进行复制和粘贴将不起作用,其他语言如C,Java,PHP等不会发生这种情况。

    易读性,我们应用了代码美化器(例如 http://indentcode.net/ )并准备好了,

    丑陋的东西是固定的,但是如果没有缩进并且逻辑改变了,我们听起来...

  9.   卡洛斯

    我是PyGTK的新手,是否可以与该语言的Shell脚本进行交互?

    1.    你好

      感谢您的教程。

      问候。