2つのボタンを持つウィンドウを作成する関数を作成するにはどうすればよいですか。各ボタンには指定された文字列があり、クリックすると指定された変数を返します。このビデオの@ 3:05に似ています https://www.khanacademy.org/science/computer-science-subject/computer-science/v/writing-a-simple-factorial-program---python -2 (これは非常に簡単な初心者プログラムのチュートリアルですが、見つけることができる唯一のビデオです)が、テキストボックスがなく、「OK」ボタンと「キャンセル」ボタンの機能をより細かく制御できます。 。
ウィンドウを作成し、その中に文字列を含む長方形を描画してから、マウスの動き/マウスのクリックをチェックするループを作成し、マウスの座標がボタンの1つに入ると、何かを返す必要がありますか?マウスがクリックされましたか?または、ボタンのあるウィンドウを簡単にする関数/関数のセットはありますか?またはモジュール?
概要
いいえ、「長方形を描画してからループを作成する」必要はありません。 willがしなければならないことは、ある種のGUIツールキットをインポートし、そのツールキットに組み込まれているメソッドとオブジェクトを使用することです。一般的に、これらのメソッドの1つは、イベントをリッスンし、それらのイベントに基づいて関数を呼び出すループを実行することです。このループはイベントループと呼ばれます。したがって、このようなループを実行する必要がありますが、ループを作成する必要はありません。
警告
リンクしたビデオのようにプロンプトからウィンドウを開くことを検討している場合、問題は少し難しくなります。これらのツールキットは、そのような方法で使用するようには設計されていません。通常、すべての入力と出力がウィジェットを介して行われる完全なGUIベースのプログラムを作成します。それは不可能ではありませんが、私の意見では、学習するときは、すべてのテキストまたはすべてのGUIに固執し、2つを混在させないようにする必要があります。
Tkinterを使用した例
たとえば、そのようなツールキットの1つはtkinterです。 Tkinterは、Pythonに組み込まれているツールキットです。 wxPython、PyQTなどの他のツールキットも非常によく似ており、同様に機能します。 Tkinterの利点は、おそらくすでにそれを持っていることであり、GUIプログラミングを学ぶための素晴らしいツールキットです。より高度なプログラミングにも最適ですが、その点に同意しない人もいます。それらに耳を傾けないでください。
これがTkinterの例です。この例はpython 2.xで機能します。python 3.xの場合、tkinter
ではなくTkinter
からインポートする必要があります。
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()
wxpython を見てください。これは、pythonの知識があれば、非常に簡単に開始できるGUIライブラリです。
次のコードは、ウィンドウを作成します( 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()
tkinterはGUIライブラリであり、このコードは単純なテキストなしボタンを作成します。
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()
#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()
これが基本です。