Tkinter Vs PyQT

Sizce GUI geliştirmek için tkinter mi daha iyi bir opsiyon yoksa pyqt mu daha iyi bir opsiyon?

PyQt5 daha iyi ama ticari bir uygulama geliştirmek istiyorsanız belirli bir ücret alıyor.
Ve ayrıca öğrenmesi tkinter'a göre biraz zor.

1 Beğeni

Tk basit ve işe yarar ama biraz eski bir kütüphane. Qt ise kapsamlı ve biraz da zor. Bence en iyisi GTK. Özellikle de arayüz Glade’le tasarlarlanınca geriye sadece sinyalleri bağlayarak arayüzün programla etkileşim kurmasını sağmak kalıyor.

Hatta bir örnek kod vereyim:

#!/usr/bin/env python3
# -*- coding:UTF-8 -*-

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk


class Main:
    def __init__(self):
        self.gui = Gtk.Builder()
        self.gui.add_from_file("main.ui")
        self.gui.connect_signals(self)
        self.gui.get_object("MainWindow").show_all()
        
    def onClick(self, widget):
        print("OK")

    def closeWindow(self, *args):
        Gtk.main_quit(*args)


if __name__ == "__main__":
    Main()
    Gtk.main()

main.ui:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.2 -->
<interface>
  <requires lib="gtk+" version="3.20"/>
  <object class="GtkApplicationWindow" id="MainWindow">
    <property name="can_focus">False</property>
    <property name="title" translatable="yes">Pencere</property>
    <signal name="destroy" handler="closeWindow" swapped="no"/>
    <child>
      <object class="GtkBox">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="margin_left">150</property>
        <property name="margin_right">150</property>
        <property name="margin_top">100</property>
        <property name="margin_bottom">100</property>
        <property name="orientation">vertical</property>
        <child>
          <object class="GtkButton">
            <property name="label" translatable="yes">button</property>
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <property name="receives_default">True</property>
            <signal name="clicked" handler="onClick" swapped="no"/>
          </object>
          <packing>
            <property name="expand">True</property>
            <property name="fill">True</property>
            <property name="position">0</property>
          </packing>
        </child>
      </object>
    </child>
  </object>
</interface>
1 Beğeni