【问题标题】:How do I make a tkinter entry widget?如何制作 tkinter 条目小部件?
【发布时间】:2013-06-01 21:56:54
【问题描述】:

这是我的代码:

import random
from tkinter import *
root=Tk()
a=Canvas(root, width=1000, height=1000)
a.pack()
e = Entry(root)
paralist = []
x=random.randint(1,10)
file = open("groupproject.txt")
line = file.readline()
for line in file:
    paralist.append(line.replace("\n", ""));

a.create_text(500,50, text = "Typing Fun", width = 700, font = "Verdana", fill = "purple")
a.create_text(500,300, text = paralist[x], width = 700, font = "Times", fill = "purple")

#master = Tk()
#a = Entry(master)
#a.pack()
#a.focus_set()
#def callback():
#    print (a.get())


root.mainloop()

注释部分应该在段落下方打印一个条目小部件,但它会为行a.create_text(500,300, text = paralist[x], width = 700, font = "Times", fill = "purple") 给出错误IndexError: list index out of range。如果我使用 e 而不是 a 它可以工作,但会在单独的窗口中打开条目小部件。

我正在尝试使 tkinter 条目小部件与文本显示在同一窗口中。有人可以告诉我该怎么做吗?

【问题讨论】:

  • 您声明root=Tk(),然后声明master = Tk(),然后将您的条目放入master而不是root

标签: python python-3.x tkinter data-entry


【解决方案1】:

首先,

paralist = [] 列表是空的,因此 1 到 10 之间的随机单词将是错误的,因为列表中没有任何内容。

master = Tk() # since Tk() is already assigned to root this will make a new window
a = Entry(master) # a is already assigned to canvas
a.pack() # this is already declare under a=canvas
a.focus_set()
def callback():
    print (a.get())

编辑:

我怀疑您的文件可能是问题所在。这段代码:

import random
from tkinter import *

root = Tk()

a = Canvas(root, width = 400, height = 400)
a.pack()
e = Entry(root)
e.pack()

paralist = []

x = random.randint(1,10)

file = open("teste.txt")
line = file.readline()

for line in file:
    paralist.append(line.replace("\n", ""));

a.create_text(200,50, text = "Typing Fun", width = 700, font = "Verdana", fill = "purple")
a.create_text(200,300, text = paralist[x], width = 700, font = "Times", fill = "purple")

b = Entry(root)
b.pack()
b.focus_set()

def callback():
    print (a.get()) 

root.mainloop()

以此为“teste.txt”:

test0
test1
test2
test3
test4
test5
test6
test7
test8
test9
test10

对我来说很好。

【讨论】:

  • 实际上我的程序将文件中的行附加到 for 循环中的列表中。那么我该如何解决这个问题,用 root 替换 master 并用 e 替换 a 给我 Index 错误......所以任何帮助将不胜感激:)
【解决方案2】:
import tkinter
window = tkinter. Tk()
window.geometry('200x200')
ent= tkinter.Entry(window)
ent.pack()

这是在 tkinter 中最简单的方法。如果你需要别的什么就问我:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 2022-06-28
    • 2019-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多