it-swarm.com.de

Wie man ein Fenster mit Buttons in Python erstellt

Wie erstelle ich eine Funktion, die ein Fenster mit zwei Schaltflächen erstellt, in denen jede Schaltfläche eine angegebene Zeichenfolge hat und beim Klicken eine angegebene Variable zurückgegeben wird? Ähnlich wie @ 3:05 in diesem Video https://www.khanacademy.org/science/computer-science-subject/computer-science/v/writing-a-simple-factorial-program---python-2 (Ich weiß, es ist ein Tutorial für ein sehr einfaches Einsteigerprogramm, aber es ist das einzige Video, das ich finden konnte), aber ohne das Textfeld, und ich habe mehr Kontrolle darüber, was die Schaltflächen "OK" und "Abbrechen" tun.

Muss ich ein Fenster erstellen, ein Rechteck mit einer Zeichenfolge darin zeichnen und dann eine Schleife machen, die Mausbewegungen/Mausklicks prüft, und etwas zurückgeben, sobald sich die Mauskoordinaten in einer der Schaltflächen befinden, und die Maus wird geklickt? Oder gibt es eine Funktion/einen Satz von Funktionen, die ein Fenster mit Schaltflächen erleichtern würden? Oder ein Modul?

5
user2874724

Überblick

Nein, Sie müssen nicht "ein Rect zeichnen, dann eine Schleife machen". Was Sie will tun müssen, ist ein GUI-Toolkit irgendeiner Art zu importieren und die in diesem Toolkit integrierten Methoden und Objekte zu verwenden. Im Allgemeinen wird eine dieser Methoden darin bestehen, eine Schleife auszuführen, die auf Ereignisse wartet und auf diesen Ereignissen basierende Funktionen aufruft. Diese Schleife wird als Ereignisschleife bezeichnet. Während eine solche Schleife ausgeführt werden muss, müssen Sie die Schleife also nicht erstellen.

Vorbehalte

Wenn Sie ein Fenster aus einer Eingabeaufforderung öffnen möchten, z. B. in dem Video, mit dem Sie verlinkt haben, ist das Problem etwas schwieriger. Diese Toolkits sind nicht für eine solche Verwendung konzipiert. In der Regel schreiben Sie ein komplettes GUI-basiertes Programm, bei dem alle Ein- und Ausgaben über Widgets erfolgen. Es ist nicht unmöglich, aber meiner Meinung nach sollten Sie sich an den gesamten Text oder an die grafische Benutzeroberfläche halten und nicht die beiden vermischen. 

Beispiel mit Tkinter

Ein solches Toolkit ist beispielsweise Tkinter. Tkinter ist das in Python integrierte Toolkit. Jedes andere Toolkit wie wxPython, PyQT usw. ist sehr ähnlich und funktioniert genauso gut. Der Vorteil von Tkinter ist, dass Sie es wahrscheinlich bereits haben, und es ist ein fantastisches Toolkit zum Erlernen der GUI-Programmierung. Es ist auch fantastisch für fortgeschrittenes Programmieren, obwohl Sie Leute finden werden, die diesem Punkt nicht zustimmen. Hör nicht auf sie. 

Hier ist ein Beispiel in Tkinter. Dieses Beispiel funktioniert in Python 2.x. Für Python 3.x müssen Sie aus tkinter statt Tkinter importieren.

import Tkinter as tk

class Example(tk.Frame):
    def __init__(self, parent):
        tk.Frame.__init__(self, parent)

        # create a Prompt, an input box, an output label,
        # and a button to do the computation
        self.Prompt = tk.Label(self, text="Enter a number:", anchor="w")
        self.entry = tk.Entry(self)
        self.submit = tk.Button(self, text="Submit", command = self.calculate)
        self.output = tk.Label(self, text="")

        # lay the widgets out on the screen. 
        self.Prompt.pack(side="top", fill="x")
        self.entry.pack(side="top", fill="x", padx=20)
        self.output.pack(side="top", fill="x", expand=True)
        self.submit.pack(side="right")

    def calculate(self):
        # get the value from the input widget, convert
        # it to an int, and do a calculation
        try:
            i = int(self.entry.get())
            result = "%s*2=%s" % (i, i*2)
        except ValueError:
            result = "Please enter digits only"

        # set the output widget to have our result
        self.output.configure(text=result)

# if this is run as a program (versus being imported),
# create a root window and an instance of our example,
# then start the event loop

if __== "__main__":
    root = tk.Tk()
    Example(root).pack(fill="both", expand=True)
    root.mainloop()
9
Bryan Oakley

Sie sollten einen Blick auf wxpython werfen, eine GUI-Bibliothek, die mit Python-Kenntnissen ziemlich einfach zu beginnen ist.

Der folgende Code erstellt ein Fenster für Sie ( source ):

import wx

app = wx.App(False)  # Create a new app, don't redirect stdout/stderr to a window.
frame = wx.Frame(None, wx.ID_ANY, "Hello World") # A Frame is a top-level window.
frame.Show(True)     # Show the frame.
app.MainLoop()

Schauen Sie sich diesen Abschnitt an (wie Sie Schaltflächen erstellen). Beginnen Sie jedoch mit der Installationsanleitung .

0
Chigurh

tkinter ist eine GUI-Bibliothek. Dieser Code erstellt einfache No-Text-Schaltflächen:

 import tkinter as tk
 class Callback:
     def __init__(self, color):
         self.color = color
     def changeColor(self): 
         print('turn', self.color)
 c1 = Callback('blue')
 c2 = Callback('yellow')
 B1 = tk.Button(command=c1.changeColor) 
 B2 = tk.Button(command=c2.changeColor) 
 B1.pack()
 B2.pack()
0
Ieshaan Saxena
#Creating a GUI for entering name
def xyz():
    global a
    print a.get() 
from Tkinter import *
root=Tk()  #It is just a holder
Label(root,text="ENter your name").grid(row=0,column=0) #Creating label
a=Entry(root)           #creating entry box
a.grid(row=7,column=8)
Button(root,text="OK",command=xyz).grid(row=1,column=1)
root.mainloop()           #important for closing th root=Tk()

Dies ist das Grundlegende.

0
Kunal Munjal