Python/Fifandraisana amin'ny alalan'ny rafitsary
Fampidirana amin'ny Interfaces Graphiques (GUI) amin'ny Python
[hanova]Ny Interface Graphique (GUI) dia manome fomba mora kokoa sy mahafinaritra kokoa amin'ny fifandraisana amin'ny fampiharana. Ny Python, izay fiteny fandaharana maro lafy, dia manana tranomboky maromaro ahafahana mamorona GUI. Ny malaza indrindra amin'izy ireo dia:
- Tkinter: Ny fifandraisana mahazatra amin'ny Python amin'ny fitaovana GUI Tk.
- PyQt: Fandaharana Python ho an'ny sehatra fampiharana Qt.
- Kivy: Tranomboky ho an'ny fampandrosoana rindranasa multitouch.
- wxPython: Fitaovana GUI mifanandrify amin'ny sehatra maro ho an'ny Python.
Ireo tranomboky tsirairay ireo dia samy manana ny tanjany ary mety ho an'ny karazana fampiharana samihafa. Tkinter dia tsara ho an'ny vao manomboka sy ny fampiharana tsotra, raha ny PyQt kosa dia matanjaka kokoa ary manankarena amin'ny endri-javatra, mety indrindra ho an'ny fampiharana sarotra.
Tkinter
[hanova]Fototry ny Tkinter
[hanova]Tkinter no tranomboky GUI be mpampiasa indrindra amin'ny Python. Tonga miaraka amin'ny Python izy io ka tsy mila apetraka misaraka.
- Famoronana Varavarankely Tsotra :
import tkinter as tk
root = tk.Tk()
root.title("Varavarankely Tsotra")
root.geometry("300x200")
root.mainloop()
- Widgets : Tkinter dia manome widgets maromaro toa ny bokotra, labels, boaty texte, sns.
label = tk.Label(root, text="Salama, Tkinter!")
label.pack()
button = tk.Button(root, text="Tsindrio Aho", command=lambda: print("Bokotra Voatsindry"))
button.pack()
- Layouts : Tkinter dia manohana mpandrindra layout telo:
pack
,grid
, aryplace
.
# Mampiasa pack()
label.pack(side="top")
# Mampiasa grid()
label.grid(row=0, column=0)
# Mampiasa place()
label.place(x=50, y=50)
Widgets Tkinter mahazatra
[hanova]- Label : Aseho ny texte na sary.
- Button : Mampihatra baiko rehefa tsindriana.
- Entry : Boaty texte tsipika tokana ho an'ny fampidirana mpampiasa.
- Text : Boaty texte maromaro.
- Frame : Vata iray ahafahana mitazona widgets hafa.
- Canvas : Widget ho an'ny fanaovana sary sy sary.
Fikarakarana Tranga
[hanova]Tkinter dia ahafahanao mampifandray ny hetsika (toa ny tsindry totozy na fanalahidy) amin'ny asany.
def on_click(event):
print(f"Voatsindry tao amin'ny {event.x}, {event.y}")
canvas = tk.Canvas(root, width=300, height=200)
canvas.bind("<Button-1>", on_click)
canvas.pack()
Fampidirana Menus
[hanova]menu = tk.Menu(root)
root.config(menu=menu)
file_menu = tk.Menu(menu)
menu.add_cascade(label="File", menu=file_menu)
file_menu.add_command(label="Open", command=open_file)
file_menu.add_command(label="Exit", command=root.quit)
PyQt
[hanova]Fampidirana amin'ny PyQt
[hanova]PyQt dia andiana fifandraisana Python amin'ny fitaovana Qt, izay sehatra matanjaka ho an'ny fampandrosoana GUI mifanandrify amin'ny sehatra maro. PyQt dia manankarena amin'ny endri-javatra mihoatra noho Tkinter ary manohana endri-javatra mandroso toy ny fampidirana tahiry, multimedia, ary maro hafa.
- Fametrahana PyQt :
pip install PyQt5
- Famoronana Varavarankely Tsotra :
import sys
from PyQt5.QtWidgets import QApplication, QWidget
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Varavarankely Tsotra")
window.setGeometry(100, 100, 400, 300)
window.show()
sys.exit(app.exec_())
Widgets PyQt mahazatra
[hanova]- QLabel : Aseho ny texte na sary.
- QPushButton : Bokotra azo tsindriana.
- QLineEdit : Boaty texte tsipika tokana.
- QTextEdit : Mpanitsy texte maromaro.
- QVBoxLayout / QHBoxLayout : Mpandrindra layout ho an'ny endrika mitsangana sy marindrano.
Sinialy sy Tobim-pamokarana
[hanova]PyQt dia mampiasa ny rafitra sinialy sy tobim-pamokarana mba hikarakarana tranga. Ny sinialy dia alefa avy amin'ny widgets, ary ny tobim-pamokarana dia asany izay mamaly ireo sinialy ireo.
from PyQt5.QtWidgets import QPushButton
button = QPushButton('Tsindrio Aho')
button.clicked.connect(lambda: print("Bokotra Voatsindry"))
Famoronana Menus
[hanova]from PyQt5.QtWidgets import QMainWindow, QAction
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
menubar = self.menuBar()
file_menu = menubar.addMenu('File')
open_action = QAction('Open', self)
file_menu.addAction(open_action)
open_action.triggered.connect(self.open_file)
def open_file(self):
print("File nisokatra")
Famoronana Dialogs
[hanova]PyQt dia manome dialog maromaro efa nomanina toy ny QFileDialog
, QColorDialog
, ary QMessageBox
.
from PyQt5.QtWidgets import QFileDialog
file_name, _ = QFileDialog.getOpenFileName(self, "Sokafy Rakitra", "", "Rakitra Rehetra (*)")
if file_name:
print(f"Rakitra voafidy: {file_name}")
Kivy
[hanova]Fampidirana amin'ny Kivy
[hanova]Kivy dia tranomboky Python misokatra ho an'ny fampandrosoana rindranasa multitouch. Mety amin'ny fampandrosoana rindranasa miasa amin'ny fitaovana finday sy birao.
- Fametrahana Kivy :
pip install kivy
- Famoronana Varavarankely Tsotra :
from kivy.app import App
from kivy.uix.label import Label
class MyApp(App):
def build(self):
return Label(text="Salama, Kivy!")
if __name__ == '__main__':
MyApp().run()
Layouts Kivy
[hanova]Kivy dia manome kilasy layout maromaro toy ny BoxLayout
, GridLayout
, AnchorLayout
, sns., ho an'ny fandaminana widgets.
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
class MyApp(App):
def build(self):
layout = BoxLayout(orientation='vertical')
layout.add_widget(Button(text="Bokotra 1"))
layout.add_widget(Button(text="Bokotra 2"))
return layout
Widgets Kivy
[hanova]- Label : Aseho ny texte.
- Button : Bokotra azo tsindriana.
- TextInput : Fampidirana texte tsipika tokana.
- Slider : Mpikorisa hisafidianana sanda iray.
- Switch : Switch azo avadika.
Fikarakarana Tranga amin'ny Kivy
[hanova]Kivy dia miandraikitra tranga amin'ny alàlan'ny toetra sy fifandraisana. Afaka mampifandray toetra na fomba amin'ny tranga ianao.
button = Button(text="Tsindrio Aho")
button.bind(on_press=lambda x: print("Bokotra voatsindry"))
Fampidirana amin'ny wxPython
[hanova]wxPython dia fitaovana GUI mifanandrify amin'ny sehatra maro ho an'ny Python, ahafahanao mamorona fampiharana zanatany ho an'ny Windows, Mac, ary Linux.
- Fametrahana wxPython :
pip install wxPython
- Famoronana Varavarankely Tsotra :
import wx
app = wx.App(False)
frame = wx.Frame(None, wx.ID_ANY, "Varavarankely Tsotra", size=(300, 200))
frame.Show(True)
app.MainLoop()