如何从 GUI 获取多个文本条目并在主 python 脚本中使用它们?
How to get multiple text entries from GUI and use those in a main python script?
我有一个 python 文件,可以提取推文,获取它们的地理坐标和情绪,最后将这些 tweets/sentiment 绘制为地图上的彩色圆圈。
需要以下输入(文本条目)才能使其正常工作:
每个输入提示旁边还显示了一个示例用户输入:
Enter the maximum number of tweets: *100*
Do you want to search by topic? type: y or n: *y*
Enter topic: *MoSalah*
Enter visulaization/projection type:
1. Mercator
2. orthographic
3. melloweide
>> *Mercator*
Zoom in to a conteninent of choice:
1. world
2. africa
3. asia
4. north america
5. south america
6. europe
7. usa
>> *world*
Enter symbol shape:
1. square
2. circle
>> *circle*
现在为了让用户体验更令人兴奋,我想构建一个简单的 GUI,询问用户所有这些输入并将它们存储到各自的变量中,但我不知道如何创建一个和更重要的是 link python 代码 运行 背后的 GUI。
我是否必须为上面显示的每个必需输入设置单独的检索功能?
例如,这是最大号的检索功能。的推文应该看起来像使用 tkinter GUI :
from tkinter import *
root = Tk()
root.geometry('200x100')
# Retrieve to get input form user and store it in a variable
# Retrieve maximum number of tweets
def retrieveMaxTweets():
maxTweets = textBox.get()
return maxTweets
textBox = Text(root, height = 2, width = 10)
textBox.pack()
buttonComment = Button(root, height=1, width=10, text='Enter max no. of tweets', command = lambda: retrieveMaxTweets())
buttonComment.pack()
mainloop()
然后在我最初要求限制的代码部分,我这样做:
limit = retrieveMaxTweets()
而不是这个:
limit = int(input(" Enter the maximum number of tweets: "))
您可以将不同 GUI 'questions' 的结果存储到字典中,以供代码的其他部分使用。这样一来,您将只有一个 'collects/validates/stores' 响应的功能。
例如
import tkinter as tk
class App(tk.Frame):
def __init__(self,master=None,**kw):
#Create a blank dictionary
self.answers = {}
tk.Frame.__init__(self,master=master,**kw)
tk.Label(self,text="Maximum number of Tweets").grid(row=0,column=0)
self.question1 = tk.Entry(self)
self.question1.grid(row=0,column=1)
tk.Label(self,text="Topic").grid(row=1,column=0)
self.question2 = tk.Entry(self)
self.question2.grid(row=1,column=1)
tk.Button(self,text="Go",command = self.collectAnswers).grid(row=2,column=1)
def collectAnswers(self):
self.answers['MaxTweets'] = self.question1.get()
self.answers['Topic'] = self.question2.get()
functionThatUsesAnswers(self.answers)
def functionThatUsesAnswers(answers):
print("Maximum Number of Tweets ", answers['MaxTweets'])
print("Topic ", answers['Topic'])
if __name__ == '__main__':
root = tk.Tk()
App(root).grid()
root.mainloop()
按下按钮时,每个 'answers' 都被添加到字典中,然后传递给执行代码主要部分的函数。
我有一个 python 文件,可以提取推文,获取它们的地理坐标和情绪,最后将这些 tweets/sentiment 绘制为地图上的彩色圆圈。
需要以下输入(文本条目)才能使其正常工作: 每个输入提示旁边还显示了一个示例用户输入:
Enter the maximum number of tweets: *100*
Do you want to search by topic? type: y or n: *y*
Enter topic: *MoSalah*
Enter visulaization/projection type:
1. Mercator
2. orthographic
3. melloweide
>> *Mercator*
Zoom in to a conteninent of choice:
1. world
2. africa
3. asia
4. north america
5. south america
6. europe
7. usa
>> *world*
Enter symbol shape:
1. square
2. circle
>> *circle*
现在为了让用户体验更令人兴奋,我想构建一个简单的 GUI,询问用户所有这些输入并将它们存储到各自的变量中,但我不知道如何创建一个和更重要的是 link python 代码 运行 背后的 GUI。
我是否必须为上面显示的每个必需输入设置单独的检索功能? 例如,这是最大号的检索功能。的推文应该看起来像使用 tkinter GUI :
from tkinter import *
root = Tk()
root.geometry('200x100')
# Retrieve to get input form user and store it in a variable
# Retrieve maximum number of tweets
def retrieveMaxTweets():
maxTweets = textBox.get()
return maxTweets
textBox = Text(root, height = 2, width = 10)
textBox.pack()
buttonComment = Button(root, height=1, width=10, text='Enter max no. of tweets', command = lambda: retrieveMaxTweets())
buttonComment.pack()
mainloop()
然后在我最初要求限制的代码部分,我这样做:
limit = retrieveMaxTweets()
而不是这个:
limit = int(input(" Enter the maximum number of tweets: "))
您可以将不同 GUI 'questions' 的结果存储到字典中,以供代码的其他部分使用。这样一来,您将只有一个 'collects/validates/stores' 响应的功能。
例如
import tkinter as tk
class App(tk.Frame):
def __init__(self,master=None,**kw):
#Create a blank dictionary
self.answers = {}
tk.Frame.__init__(self,master=master,**kw)
tk.Label(self,text="Maximum number of Tweets").grid(row=0,column=0)
self.question1 = tk.Entry(self)
self.question1.grid(row=0,column=1)
tk.Label(self,text="Topic").grid(row=1,column=0)
self.question2 = tk.Entry(self)
self.question2.grid(row=1,column=1)
tk.Button(self,text="Go",command = self.collectAnswers).grid(row=2,column=1)
def collectAnswers(self):
self.answers['MaxTweets'] = self.question1.get()
self.answers['Topic'] = self.question2.get()
functionThatUsesAnswers(self.answers)
def functionThatUsesAnswers(answers):
print("Maximum Number of Tweets ", answers['MaxTweets'])
print("Topic ", answers['Topic'])
if __name__ == '__main__':
root = tk.Tk()
App(root).grid()
root.mainloop()
按下按钮时,每个 'answers' 都被添加到字典中,然后传递给执行代码主要部分的函数。