Python tkinter小部件界面交互按钮

Python tkinter小部件界面交互按钮,python,button,interface,widget,tkinter,Python,Button,Interface,Widget,Tkinter,我对交互式python编程非常陌生,所以请耐心听我说。我将PyCharm与Python 3.3一起使用 我正在尝试构建以下内容: 我想生成一个函数,该函数将弹出带有两个文本输入字段和两个按钮的交互式窗口: -第一个按钮(开始)运行一个小的文本搜索功能(我已经编写并测试过),而第二个按钮(退出)将退出应用程序 -第一个文本输入字段获取要搜索的字符串(例如:“Hello Stack World”),而另一个文本输入字段获取要在第一个输入字符串中搜索的字符串(例如:“Stack”) 计划是,一旦填写了

我对交互式python编程非常陌生,所以请耐心听我说。我将PyCharm与Python 3.3一起使用

我正在尝试构建以下内容:

我想生成一个函数,该函数将弹出带有两个文本输入字段和两个按钮的交互式窗口:

-第一个按钮(开始)运行一个小的文本搜索功能(我已经编写并测试过),而第二个按钮(退出)将退出应用程序

-第一个文本输入字段获取要搜索的字符串(例如:“Hello Stack World”),而另一个文本输入字段获取要在第一个输入字符串中搜索的字符串(例如:“Stack”)

计划是,一旦填写了两个文本字段,按下“开始”按钮将启动文本搜索功能,而“退出”按钮将停止程序

问题是,“退出”按钮按其应有的方式工作,但“开始”按钮什么也不做。我认为它实际上把我的程序发送到一个无限循环中

非常感谢您的帮助。我是界面/小部件编程的新手

提前谢谢

这是我现在的代码:

import tkinter
from tkinter import *

class Application(Frame):

def text_scan(self):
    dataf = str(input()) '''string to be searched'''
    s = str(input())     ''' string to search for'''
    ''' ... I will leave out the rest of this function code for brevity''' 

def createWidgets(self):

    root.title("text scan")
    Label (text="Please enter your text:").pack(side=TOP,padx=10,pady=10)
    dataf = Entry(root, width=10).pack(side=TOP,padx=10,pady=10)

    Label (text="Please enter the text to find:").pack(side=TOP,padx=10,pady=10)
    s = Entry(root, width=10).pack(side=TOP,padx=10,pady=10)

    self.button = Button(root,text="START",command=self.text_scan)
    self.button.pack()

    self.QUIT = Button(self)
    self.QUIT["text"] = "QUIT"
    self.QUIT["fg"] = "red"
    self.QUIT["command"] = self.quit

    self.QUIT.pack({"side": "left"})

def __init__(self, master=None):
    Frame.__init__(self, master)
    self.filename = None
    self.pack()
    self.createWidgets()

root = Tk()
root.title("text scan")
root.quit()
app = Application(master=root)
app.mainloop()

不能将GUI与
输入混用。要从条目小部件中获取值,需要执行
s.get()
dataf.get()
。但是,在此之前,您需要在创建小部件时删除对
pack
的调用,并将其移动到单独的语句中。原因是
pack
返回
None
,因此目前
dataf
s
None
。您还需要将对这些小部件的引用保存为类属性

def text_scan(...):
    dataf_value = self.dataf.get()
    ...
...
self.dataf = Entry(...)
self.dataf.pack(...)
...

纯粹的天才!非常感谢你。因为你显然不是这个话题的新手,你能告诉我如何在同一个窗口中弹出文本扫描功能输出(搜索结果)的正确方向吗?现在,它在控制台中打印出来。再次感谢!