Giới thiệu
Trong GNU / Linux, việc phát triển các ứng dụng với Python 3, Glade và GTK + 3 là rất dễ dàng, các gói được cung cấp theo mặc định trong hầu hết các bản phân phối.
Xuyên qua Glade chúng ta có thể tạo giao diện người dùng một cách nhanh chóng và dễ dàng, sau đó sử dụng chúng cùng với Python. Để đạt được điều này, bạn sử dụng PyGObject nhờ hệ thống xem xét nội quan mà GNOME cung cấp, giúp cho việc Phát triển Ứng dụng Nhanh (RAD) dễ dàng hơn nhiều; cũng có thể sử dụng các giao diện của chúng tôi được tạo bằng Glade từ các ngôn ngữ lập trình khác.
Sự cố xảy ra khi chúng tôi muốn sử dụng các ứng dụng của mình trong Microsoft Windows, vì cho đến gần đây các gói cho hệ thống này vẫn chưa chính thức tồn tại.
Với hướng dẫn này, mục đích là các ứng dụng đã được tạo trong GNU / Linux sử dụng Python 3 và GTK + 3 chạy mà không gặp sự cố trong Windows.
Yêu cầu
- Python 3.3
- Gtk + 3
- Glade 3.14 hoặc cao hơn (GUI designer)
- pygobject
Cài đặt trên Windows
Nó sẽ bắt đầu bằng cách tạo một thư mục có tên phần mềm hoặc tùy chọn khác của bạn và chúng tôi sẽ lưu trong đó tất cả các gói được tải xuống.
Tải xuống các gói cài đặt
Tải xuống Python 3.3
Nó có thể được tải xuống từ trang Python chính thức python.org
Bằng cách nhấp vào liên kết (Windows Installer) trình cài đặt Python sẽ tải xuống.
Tải xuống Glade
Tải xuống trang web: Glade.gnome.org
Cả hai phiên bản Python và Glade đều là 32-bit, nhưng chúng chạy hoàn hảo trên các hệ thống 64-bit
Tải xuống PyGObject
Tải xuống trang web: https://wiki.gnome.org/PyGObject
Chúng tôi phải tải xuống phiên bản cho GTK + 3
Cài đặt các gói
Cho đến thời điểm này, chúng tôi đã có tất cả các gói đã tải xuống trong thư mục phần mềm và khi chúng tôi đã tải xuống từng gói, trước tiên chúng tôi sẽ bắt đầu với cài đặt Python.
Cài đặt Python
Cài đặt rất đơn giản, trình hướng dẫn sẽ hướng dẫn chúng ta trong suốt quá trình; Chúng tôi để tất cả các tùy chọn được đánh dấu theo mặc định.
Như đã thấy trong hình, Python cài đặt trong thư mục C: \ Python33 \ theo mặc định, chúng tôi để nguyên như vậy và tiếp tục cài đặt.
Tại điểm cài đặt này, chúng tôi chọn tùy chọn Thêm python.exe vào Đường dẫn, với mục đích khi chúng tôi khởi chạy trình thông dịch Python, nó sẽ được thực thi mà không cần phải thêm nó vào đường dẫn hệ thống theo cách thủ công.
Sau đó, chúng tôi hoàn tất quá trình cài đặt và Python sẽ được cài đặt trên hệ thống của chúng tôi.
Cài đặt Glade
Cài đặt Glade không phải là một sự phức tạp lớn, chúng tôi chạy chương trình cài đặt và làm theo các bước của trình hướng dẫn.
Cài đặt PyGObject
Chúng tôi đã tải xuống gói pygi-aio-3.4.2rev11.7z, gói này bao gồm các thư viện PyGObject cho Python 3.3 và GTK + 3 cho Windows, được nén bằng 7-zip, chúng ta giải nén nó sẽ có một thư mục với nội dung sau:
Bây giờ chúng tôi sao chép thư mục gtk a C: \ Python33 \ Lib \ site-package là nơi các gói bên thứ ba cho Python được cài đặt.
Chúng tôi quay lại thư mục của chúng tôi pygi-aio-3.4.2rev11 và chúng tôi mở thư mục py33 cho phiên bản Python là 3.3
Chúng tôi chọn tất cả nội dung thư mục py33 và chúng tôi sao chép nó trở lại thư mục C: \ Python33 \ Lib \ site-package, chúng tôi sẽ được yêu cầu trộn và ghi đè, chúng tôi trả lời khẳng định. Nội dung của thư mục gói trang web nó sẽ như thể hiện trong hình ảnh sau:
Kiểm tra cài đặt đúng của PyGobject và GTK + 3
Để xác minh rằng cài đặt của chúng tôi đã chính xác, chúng tôi mở Python IDLE và nhập các thư viện GTK + 3 và nếu chúng tôi không có bất kỳ thông báo lỗi nào, mọi thứ sẽ được thực hiện chính xác.
from gi.repository import Gtk
Và tại sao GTK? Sẽ tốt hơn nếu phát triển trong QT? bên cạnh đó là đa dạng và nhiều người nói rằng đó là tương lai
Hai thư viện đồ họa tuyệt vời trên máy tính để bàn GNU / Linux là GTK và QT, mỗi người chọn một cái mà họ thích. Không có lý do gì để chiến đấu.
Sự khác biệt giữa GTK và QT là cái sau là một khung, thực sự rất tốt, nhưng là một khung thì nó tiêu tốn nhiều tài nguyên hơn một chút.
Ví dụ: Mozilla Firefox, Google Chrome, LibreOffice và một tập đoàn lâu dài được tạo bằng GTK; Điều này không có nghĩa là nó tốt hơn QT, mọi người nên chọn cái phù hợp với sở thích và nhu cầu của mình, chúng tôi không muốn gây ra một cuộc thảo luận về nó.
Google chrome từ phiên bản 33, để lại gtk.
và tại sao giải thích cho windows mà không phải linux
Có phải vì trong Linux mọi thứ đều đã được đóng gói sẵn và nằm trong kho lưu trữ chính thức của mỗi bản phân phối? Ví dụ: trong Fedora, tôi đã cài đặt Python 3, Gtk + 3 và PyGobject theo mặc định. Nếu tôi muốn Glade, nó chỉ là "yum install glade". Dễ dàng phải không? 🙂
Vì như Germán nói, đối với các bản phân phối GNU / Linux, chúng đã được đóng gói sẵn và rất dễ cài đặt chúng; ví dụ để cài đặt glade trên Debian rất đơn giản:
aptitude install glade
Nếu tôi muốn sử dụng Python 2.7 thì các bước có giống nhau không?
Rõ ràng, việc cài đặt Python 2.7 32-bit (ngay cả khi bạn sử dụng HĐH 64-bit) và thay vì thư mục py33, 2.7 sẽ sử dụng. Nó sẽ hoạt động?
Cảm ơn bạn.
Vâng, nếu bạn có vấn đề, hãy để lại cho tôi một bình luận.
May mắn.
Cảm ơn, tôi đã thử và bây giờ "Hello world" phù hợp với tôi.
Tôi xem liệu tôi có thể nhận được bất kỳ hướng dẫn pyGTK3 hay nào hoặc bất kỳ thứ gì nó được gọi và bất kỳ vấn đề nào không, hãy cảnh báo.
Hướng dẫn:
https://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html
Caramba! Cảm ơn rất nhiều!
Thử nghiệm GTK3 với Python 2.7 trên Windows và làm theo hướng dẫn. Cho đến nay, tất cả các chương trình đều phù hợp với tôi, ngoại trừ chương trình trong Chương 14 (IconView -> https://python-gtk-3-tutorial.readthedocs.org/en/latest/iconview.html)
Nó mang lại cho tôi lỗi sau:
Traceback (cuộc gọi gần đây nhất cuối cùng):
Tệp "C: \ Users \ User \ Desktop \ test.py", dòng 24, trong
win = IconViewWindow ()
Tệp "C: \ Users \ User \ Desktop \ test.py", dòng 19, trong __init__
pixbuf = Gtk.IconTheme.get_default (). load_icon (biểu tượng, 64, 0)
Tệp "C: \ Python27 \ lib \ site-package \ gi \ styles.py", dòng 47, trong hàm
return info.invoke (* args, ** kwargs)
GError: Biểu tượng 'gtk-cut' không có trong chủ đề
Tôi đã thử nó với các biểu tượng khác và nó cũng không hoạt động. Tôi có cần cài đặt chủ đề không? Cảm ơn kể từ bây giờ.
Ví dụ 19. Kéo và thả cũng không.
Hàm gọi trong cả hai trường hợp và đó là nơi tôi gặp lỗi là:
pixbuf = Gtk.IconTheme.get_default (). load_icon (icon_name, 16, 0)
Tôi không thể tìm thấy biểu tượng, nhưng trong các ví dụ khác, bạn có thể sử dụng chúng. Nó chỉ mang lại cho tôi lỗi khi tôi muốn sử dụng nó với chức năng đó (ở đây icon_name có thể được thay thế bằng một giá trị như Gtk.STOCK_CUT hoặc bất cứ thứ gì và nó cho cùng một lỗi).
Tôi tiếp tục nói với chính mình. Điều phù hợp với tôi trong các ví dụ khác là hình ảnh tải trên các nút. Tôi không thể tải các biểu tượng có chức năng có trong hai ví dụ mà tôi đã đưa ra trước đó.
Tôi nghĩ rằng lỗi là rõ ràng:
GError: Biểu tượng 'gtk-cut' không có trong chủ đề
Rõ ràng biểu tượng đó không có, hãy sử dụng biểu tượng khác. Có thể người bảo trì gói đã không bao gồm các biểu tượng chủ đề hoặc không thể tìm thấy nó trong đường dẫn mặc định, hãy sử dụng bản phân phối GNU / Linux và xem lỗi tương tự vẫn xuất hiện.
Về câu hỏi 19, nó có vẻ liên quan đến phiên bản PyGobject, ở đầu tài liệu có ghi:
Chú thích
Các phiên bản của PyGObject = 3.0.3 là bắt buộc để các ví dụ sau hoạt động.
Phiên bản bạn có là 3.0, hãy thử bản phân phối GNU / Linux; và sau đó chúng ta phải đợi họ cập nhật gói (dành cho Windows) hoặc trong mọi trường hợp, bạn có thể tự biên dịch.
Xin chào và tiếp tục.
Trong Ubuntu, tất cả các ví dụ hướng dẫn hoạt động hoàn hảo đối với tôi. Trên Windows, nó vẫn không hoạt động. Tôi sẽ phải đợi. Một thứ khác không đi bộ là ví dụ về Spinner, không tạo hoạt ảnh. Xin chào và cảm ơn.
Tôi đã làm theo hướng dẫn cài đặt và cài đặt mọi thứ từng bước.
Và thực thi đoạn mã sau:
từ gi.repository nhập Gtk
lớp FiestraPrincipal:
def __init __ (bản thân):
filename = "/ data / dam / Python ví dụ / Saudoform"
constructor = Gtk.builder ()
constructor.add_from_file (tên tệp)
#dictionary nơi chúng tôi liên hệ các sinais với các sự kiện
sinais = {
«ClickedAccept»: self.clic_boton,
"ActivateTextCadro": self.clic_boton,
"DestroyFiestra": Gtk.main_quit
}
constructor.connect_signals (sinais)
# Chúng tôi nhận tham chiếu đến bộ mô tả XML để có thể truy cập
self.label = self.widgets_widget ("Nhãn")
self.cadroTexto = self.widgets_widget ("CadroTexto")
def button_click (self, widget):
text = self.cadroTexto.get_text ()
self.label.set_text ("wave% s"% text)
if __name__ == »__ main__»:
FiestraPrincipal ()
Gtk.Main ()
Tôi nhận được câu trả lời này:
Traceback (cuộc gọi gần đây nhất cuối cùng):
Tệp «C: / Users / admin / Google Drive / test / Saudo Form.py», dòng 3, trong
từ gi.repository nhập Gtk
Tệp "C: \ Python33 \ lib \ site-package \ gi \ __ init__.py", dòng 27, trong
từ ._gi nhập _API, Kho lưu trữ
ImportError: DLL load không thành công:% 1 không phải là ứng dụng Win32 hợp lệ.
Ai đó biết vấn đề là gì, hoặc giải pháp khả thi của nó có thể là gì.
Cám ơn rất nhiều.
Hấp dẫn. Tôi đã thực hiện cài đặt trong linux, nhưng giải thích cho các cửa sổ là tốt, bây giờ tôi có nó trong cả hai. 😉
Lần đầu tiên sử dụng windows 7 32-bit thật buồn cười.
Trên Windows 7 64-bit, tôi không thể chạy nó, tôi luôn nhận được nó;
>>> từ gi.repository nhập Gtk
Traceback (cuộc gọi gần đây nhất cuối cùng):
Tệp «», dòng 1, trong
Tệp "C: \ Python33 \ lib \ site-package \ gi \ __ init__.py", dòng 27, trong
từ ._gi nhập _API
ImportError: DLL load không thành công: Không tìm thấy quy trình được chỉ định.
Tôi đã thử nó bằng mọi cách có thể, tôi đã mất ảo tưởng về việc cài đặt nó.
Bạn sẽ thấy các thư viện 64-bit vẫn còn một số lỗi, hãy cài đặt phiên bản 32-bit của cả python và GTK + để không gặp sự cố.
Bạn đừng bao giờ đánh mất ảo tưởng 🙂
Xin chào, tôi đang làm việc với python + gtk3, rất tốt, hiện tại tôi đang gặp một chút vấn đề, tôi muốn thay đổi biểu tượng thành biểu mẫu (cửa sổ) của mình trong trường hợp này và tôi có thể thay đổi nó, cảm ơn trước, Xin chào
xuất bản các video đơn giản về cách lập trình trong gtk + 3 và các lời chào hướng dẫn đơn giản
Hướng dẫn xuất sắc. Cảm ơn rất nhiều vì sự nỗ lực của bạn. Trân trọng.
Tôi đã làm tất cả các bước và khi tôi tin tưởng cài đặt, tôi đã gặp lỗi này.
Traceback (cuộc gọi gần đây nhất cuối cùng):
Tệp «», dòng 1, trong
từ gi.repository nhập Gtk
ImportError: Không có mô-đun nào có tên 'gi'