【问题标题】:tkinter widget interface interactive buttontkinter 小部件界面交互按钮
【发布时间】:2013-10-21 08:35:17
【问题描述】:

我对交互式 python 编程非常陌生,所以请多多包涵。我正在将 PyCharm 与 Python 3.3 一起使用。

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

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

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

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

计划是一旦两个文本字段都填写完毕,按“START”按钮将启动文本搜索功能,而“QUIT”按钮将停止程序。

问题是,“退出”按钮按应有的方式工作,但“开始”按钮没有任何作用。我认为它实际上将我的程序发送到一个无限循环中。

非常感谢任何和所有的帮助。我是界面/小部件编程的新手。

提前致谢!

这是我现在拥有的代码:

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()

【问题讨论】:

    标签: python button interface widget tkinter


    【解决方案1】:

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

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

    【讨论】:

    • 纯粹的天才!太感谢了。由于您显然不是该主题的新手,您能否指出我如何使 text_scan 函数输出(搜索结果)在同一个窗口中弹出的正确方向?现在,它在控制台中打印出来。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2022-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    • 1970-01-01
    • 2019-01-04
    • 2021-09-10
    相关资源
    最近更新 更多