我无法创建一个输入文本框,该文本框通过一个函数并输出测试到输出文本框与Tkinter

时间:2017-09-19 04:32:35

标签: python-3.x tkinter

我是Python3.6.2的新手 所以我想要一个带有输入的程序(来自tkinter的文本框),并在我的自定义"语言"中输出一个单词。

使用此功能

def Mescre(n):
  Words = (n)
  Mes = str.maketrans('abcdefghijklmnopqrstuvwxyz', 'ektnopzcamjqwyuxsbfdiglhrv')
  print(Words.translate(Mes))

以及我希望窗口看起来像什么

from tkinter import*

root = Tk()

Mescre = Label(root,  text="Input:")
English = Label(root , text="Output:")

label1.grid(row=0, sticky=E)
label2.grid(row=1, sticky=E)

entry1 = Entry(root)
entry2 = Entry(root)

entry1.grid = (row=0, column=1)
entry2.grid = (row=1, column=1)

root.mainloop()

如果"你好"在输入文本框中,我希望输出为" coqqu"在“输出”文本框中。

2 个答案:

答案 0 :(得分:3)

请参阅下面的示例:

from tkinter import *

class App:
    def __init__(self, root):
        self.root = root
        self.sv = StringVar()
        self.Mes = str.maketrans('abcdefghijklmnopqrstuvwxyz', 'ektnopzcamjqwyuxsbfdiglhrv')
        self.entry = Entry(self.root, textvariable = self.sv)
        self.label = Label(self.root)
        self.entry.pack()
        self.label.pack()
        self.sv.trace("w", self.callback)
    def callback(self, *args):
        self.label.configure({"text": self.entry.get().translate(self.Mes)})

root = Tk()
App(root)
root.mainloop()

在此,我们将StringVar()定义为textvariable小部件的属性Entry的值。

然后,我们会在变量上为callback分配trace(),以便每当更新变量时(当有人在Entry中输入内容时),我们会调用callback()。< / p>

callback()内,我们在configure()窗口小部件上使用Label,以便将文本设置为等于Entry窗口小部件值的翻译后版本。

这会创建一个&#34;实时更新&#34;翻译效果。

答案 1 :(得分:2)

这是一个基本的例子:

import tkinter as tk

root = tk.Tk()
def Mescre():
  val = textfield.get()
  Words = (val)
  Mes = str.maketrans('abcdefghijklmnopqrstuvwxyz', 'ektnopzcamjqwyuxsbfdiglhrv')
  print(Words.translate(Mes))

textfield = tk.Entry(root)
textfield.pack()
button = tk.Button(root, command=Mescre, text='Push')
button.pack()
root.mainloop()

Push button to translate text to function

<强>更新

import tkinter as tk

root = tk.Tk()
def Mescre():
  val = textfield.get()
  Words = (val)
  Mes = str.maketrans('abcdefghijklmnopqrstuvwxyz', 'ektnopzcamjqwyuxsbfdiglhrv')
  translation = Words.translate(Mes)
  #print(translation)
  outputfield.delete(0, tk.END)
  outputfield.insert(0, translation)


textfield = tk.Entry(root)
textfield.pack()
outputfield = tk.Entry(root)
outputfield.pack()
button = tk.Button(root, command=Mescre, text='Push')
button.pack()
root.mainloop()