将输入字符串转换为另一个字符串的现有Tkinter代码

时间:2013-07-25 18:06:06

标签: python user-interface tkinter

我已经发布了这个,但是,我的目的是不同的。我相信应该有代码来做与此类似的事情。我希望有人可能知道在哪里寻找这样的例子(作用于字符串的函数的接口)。更好的是,是否有人拥有他们已经拥有的代码块?我只是在寻找一个基于模板的模板。提前致谢。

为了让您了解我的意思,这是我想到的功能:

 def psi_j(x, j):
      rtn = []
      for n2 in range(0, len(x) * j - 2):
        n = n2 / j
        r = n2 - n * j
        rtn.append(j * x[n] + r * (x[n + 1] - x[n]))
        print 'n2 =', n2, ': n =', n, ' r =' , r, ' rtn =', rtn
      return rtn

此代码采用字符串x = [0,1,1,1,2]为例(它必须始终以0开头)和参数j,比如2,并输出一个字符串(x = [0,1, ,在这个例子中,2,2,2,2,3]。

它分两步完成:首先它将一些数字m分解为j的倍数和余数。然后它通过rtn.append行上的函数运行此分解。

请注意,这有cj - 1个术语,其中c是输入字符串中的术语数,j是参数。通常,我们希望它能够计算cj项。这是一个功能问题,我现在非常乐意暂时搁置。

我的主要兴趣是能够使这个程序可用于不懂编程知识的人。特别是,我需要某种用户界面来提示用户输入一个字符串(理想情况下只需输入011123334中的数字)和一个参数。

编辑:

错误发生在第三行,python突出显示橙色(self,master)右侧的空格,一直是橙色,一直到行尾。

1 个答案:

答案 0 :(得分:1)

如果您对使用Tkinter创建此用户界面感兴趣,可以使用以下代码:

from Tkinter import *

class App(Frame):
    def __init__(self, master):
        Frame.__init__(self, master)
        self.grid()
        self.create_widgets()

    def create_widgets(self):
        self.entryLabel = Label(self, text="Please enter a list of numbers (no commas):")
        self.entryLabel.grid(row=0, column=0, columnspan=2)

        self.listEntry = Entry(self)
        self.listEntry.grid(row=0, column=2, sticky=E)

        self.entryLabel = Label(self, text="Please enter an index value:")
        self.entryLabel.grid(row=1, column=0, columnspan=2, sticky=E)

        self.indexEntry = Entry(self)
        self.indexEntry.grid(row=1, column=2)

        self.runBttn = Button(self, text="Run Function", command=self.psiFunction)
        self.runBttn.grid(row=2, column=0, sticky=W)

        self.answerLabel = Label(self, text="Output List:")
        self.answerLabel.grid(row=2, column=1, sticky=W)

    def psiFunction(self):
        j = int(self.indexEntry.get())
        valueList = list(self.listEntry.get())
        x = map(int, valueList)
        if x[0] != 0:
            x.insert(0, 0)
        rtn = []
        for n2 in range(0, len(x) * j - 2):
            n = n2 / j
            r = n2 - n * j
            rtn.append(j * x[n] + r * (x[n + 1] - x[n]))
        self.answer = Label(self, text=rtn)
        self.answer.grid(row=2, column=2, sticky=W)


if __name__ == "__main__":
    root = Tk()
    app = App(root)
    root.mainloop()

如果您有任何疑问,请告诉我;这适用于python 2.7。

如果用户忘记输入,该程序会自动添加零,输入格式为例如01112。

您也可以稍后使用rtn;这是一个结果列表。