Python/Fifandraisana amin'ny alalan'ny rafitsary
Fampidirana amin'ny Interfaces Graphiques (GUI) amin'ny Python
hanovaNy 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
hanovaFototry ny Tkinter
hanovaTkinter 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
hanovaTkinter 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
hanovamenu = 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
hanovaFampidirana amin'ny PyQt
hanovaPyQt 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
hanovaPyQt 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
hanovafrom 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
hanovaPyQt 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
hanovaFampidirana amin'ny Kivy
hanovaKivy 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
hanovaKivy 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
hanovaKivy 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
hanovawxPython 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()