[PYTHON] Einfache GUI App mit Tkinter Text

Einführung

Erstellen Sie mit Tkinter aus Python eine einfache GUI-App, die wie ein "Texteditor" aussieht. Wir haben ein Text-Widget und eine Bildlaufleiste integriert, um es zu einer Klasse für die einfache Wiederverwendung zu machen.

Vollständiges Bild

Es ist eine einfache Anwendung im "Texteditor" -Stil. editor.gif

Kommentar

importieren

Importieren Sie zuerst, um Tkinter, die Standard-Python-GUI-Bibliothek und den Dateidialog zu verwenden.

import tkinter as tk
from tkinter import filedialog

Textrahmenklasse

Erstellen Sie eine Textrahmenklasse mit einer Bildlaufleiste. Klassen werden aus Frames abgeleitet, um Text-, vertikale und horizontale Bildlaufleisten zu erstellen und diese mithilfe eines Rasters auf dem Basisrahmen zu platzieren.

class SbTextFrame(tk.Frame):
    def __init__(self,master):
        super().__init__(master)
        text = tk.Text(self,wrap='none',undo=True)
        x_sb = tk.Scrollbar(self,orient='horizontal')
        y_sb = tk.Scrollbar(self,orient='vertical')
        x_sb.config(command=text.xview)
        y_sb.config(command=text.yview)
        text.config(xscrollcommand=x_sb.set,yscrollcommand=y_sb.set)
        text.grid(column=0,row=0,sticky='nsew')
        x_sb.grid(column=0,row=1,sticky='ew')
        y_sb.grid(column=1,row=0,sticky='ns')
        self.columnconfigure(0,weight=1)
        self.rowconfigure(0,weight=1)
        self.text = text
        self.x_sb = x_sb
        self.y_sb = y_sb

Anwendungsfenster

Überspringen Sie fileopen () und filesave () und springen Sie zur Erklärung von main (). Erstellen Sie zu Beginn von main () ein Anwendungsfenster und legen Sie den Titel und die Fenstergröße fest.

def main():
    root = tk.Tk()
    root.title('editor')
    root.geometry('400x300')

Textplatzierung

Erstellen Sie dann einen Textrahmen mit einer Bildlaufleiste und platzieren Sie ihn im gesamten Anwendungsfenster. Mit "expand = True" ändert sich die Größe des Textrahmens entsprechend der Fenstergröße.

    textframe = SbTextFrame(root)
    textframe.pack(side='top',fill='both',expand=True)

Menüerstellung

Erstellen Sie ein Dateimenü und platzieren Sie es in der Menüleiste des Anwendungsfensters.

    menubar = tk.Menu(root)
    filemenu = tk.Menu(menubar,tearoff=0)
    filemenu.add_command(label='Open',command=fileopen)
    filemenu.add_command(label='Save',command=filesave)
    filemenu.add_command(label='Exit',command=exit)
    menubar.add_cascade(label='File',menu=filemenu)
    root.config(menu=menubar)

Ganzer Quellcode

Der gesamte Quellcode lautet wie folgt.

import tkinter as tk
from tkinter import filedialog

class SbTextFrame(tk.Frame):
    def __init__(self,master):
        super().__init__(master)
        text = tk.Text(self,wrap='none',undo=True)
        x_sb = tk.Scrollbar(self,orient='horizontal')
        y_sb = tk.Scrollbar(self,orient='vertical')
        x_sb.config(command=text.xview)
        y_sb.config(command=text.yview)
        text.config(xscrollcommand=x_sb.set,yscrollcommand=y_sb.set)
        text.grid(column=0,row=0,sticky='nsew')
        x_sb.grid(column=0,row=1,sticky='ew')
        y_sb.grid(column=1,row=0,sticky='ns')
        self.columnconfigure(0,weight=1)
        self.rowconfigure(0,weight=1)
        self.text = text
        self.x_sb = x_sb
        self.y_sb = y_sb

def fileopen():
    global fname,textframe,root
    fname = filedialog.askopenfilename()
    f = open(fname,'r')
    lines = f.readlines()
    f.close()
    textframe.text.delete('1.0','end')
    for line in lines:
        textframe.text.insert('end',line)
    root.title('editor - '+fname)

def filesave():
    global fname,textframe
    if fname == '':
        return
    f = open(fname,'w')
    lines = textframe.text.get('1.0','end-1c')
    f.writelines(lines)
    f.close()

def main():
    global fname,textframe,root
    fname = ''
    root = tk.Tk()
    root.title('editor')
    root.geometry('400x300')
    textframe = SbTextFrame(root)
    textframe.pack(side='top',fill='both',expand=True)
    menubar = tk.Menu(root)
    filemenu = tk.Menu(menubar,tearoff=0)
    filemenu.add_command(label='Open',command=fileopen)
    filemenu.add_command(label='Save',command=filesave)
    filemenu.add_command(label='Exit',command=exit)
    menubar.add_cascade(label='File',menu=filemenu)
    root.config(menu=menubar)
    root.mainloop()

if __name__ == '__main__':
    main()

abschließend

Diesmal habe ich eine einfache GUI-App in Python erstellt. Es war etwas ärgerlich, dem Text-Widget vertikale und horizontale Bildlaufleisten hinzuzufügen, deshalb habe ich versucht, es zu einer Klasse zu machen, damit es in Zukunft wiederverwendet werden kann. Ich denke, es ist nützlich, wenn Sie eine App erstellen, die Text-Widgets mit vertikalen und horizontalen Bildlaufleisten stark nutzt.

Recommended Posts

Einfache GUI App mit Tkinter Text
Machen Sie GUI-Apps mit tkinter ganz einfach
Erstellen Sie eine GUI-App mit Tkinter of Python
Erstellen Sie mit Py2app und Tkinter eine native GUI-App
Erstellen einer Bildaufteilungs-App mit Tkinter
Einfache Web-App mit Python + Flask + Heroku
MVC mit Tkinter
Easy Raspberry Pi GUI App Entwicklung Anfänger Teil 1
Erstellen Sie eine mit tkinter erstellte ausführbare GUI-Datei
GUI-Bildschneidewerkzeug mit Python + Tkinter
GUI-Automatisierung mit Python x Windows App Driver
Easy Raspberry Pi GUI App Entwicklung Anfänger Teil 2
Laden Sie Bilder mit tkinter mit GUI auf S3 hoch
Easy Grad-CAM mit Pytorch-Gradcam
Einfaches maschinelles Lernen mit Scikit-Learn und Flask ✕ Web App
App mit Registerkarten in Tkinter
Werde mit Tkinter Weihnachtsmann
Text Mining mit Python-Scraping-
Lassen Sie uns eine Mac-App mit Tkinter und py2app erstellen
Pythonbrew mit erhabenem Text
[Tkinter] Verbessern Sie die Reaktionsfähigkeit der Benutzeroberfläche
Einfaches Debuggen mit ipdb
Einfache TopView mit OpenCV
So einfach wie möglich eine GUI mit Python erstellen [tkinter edition]
Ich habe versucht, die Benutzeroberfläche neben Python und Tkinter dreiäugig zu gestalten
Programmieren mit Python und Tkinter
Todo App mit Django-Bootstrap-Modal-Forms-Plugin
Einfache toxische Umgebung mit Jenkins
Einführung in Tkinter 2: Button
[Analyse des gemeinsamen Auftretens] Einfache Analyse des gemeinsamen Auftretens mit Python! [Python]
Einfache Ordnersynchronisation mit Python
Bildschirmumschaltung / Bildschirmübergang mit Tkinter
Einfaches Web-Scraping mit Scrapy
Erstellen Sie den Image Viewer mit Tkinter
[GUI in Python] PyQt5-Layout-Management-
Führen Sie Label mit tkinter [Python] aus.
Einfache Python-Kompilierung mit NUITKA-Utilities
Einfacher HTTP-Server mit Python
Einfache Proxy-Anmeldung mit Django-Hijack
Ich habe den BMI mit tkinter gemessen
[GUI mit Python] PyQt5-Vorbereitung-
Text Emotionsanalyse mit ML-Ask
Spielen Sie mit A3RT (Textvorschlag)
[GUI mit Python] PyQt5 -Paint-
Azure Monitor bestimmt sowohl die Cloud-Überwachung als auch die lokale Überwachung! Einfach mit GUI!