[英]Tkinter How to create new instance of chat window whenever the button is clicked
[英]How to create a chat window with tkinter?
我试图创建一个聊天窗口,但它无法正常工作。 每次输入消息时,都会弹出并增加窗口。 我该怎么办?
from Tkinter import *
window = Tk()
input_user = StringVar()
input_field = Entry(window, text=input_user)
input_field.pack(side=BOTTOM, fill=X)
def Enter_pressed(event):
input_get = input_field.get()
print(input_get)
label = Label(window, text=input_get)
input_user.set('')
label.pack()
return "break"
frame = Frame(window, width=300, height=300)
input_field.bind("<Return>", Enter_pressed)
frame.pack()
window.mainloop()
每次按Enter键时,您要添加标签,请尝试在“ 文本”小部件中显示消息:
from Tkinter import *
window = Tk()
messages = Text(window)
messages.pack()
input_user = StringVar()
input_field = Entry(window, text=input_user)
input_field.pack(side=BOTTOM, fill=X)
def Enter_pressed(event):
input_get = input_field.get()
print(input_get)
messages.insert(INSERT, '%s\n' % input_get)
# label = Label(window, text=input_get)
input_user.set('')
# label.pack()
return "break"
frame = Frame(window) # , width=300, height=300)
input_field.bind("<Return>", Enter_pressed)
frame.pack()
window.mainloop()
您的问题是您创建的标签将window
作为父window
而不是frame
,因此它们被包装在frame
之下,而不是内部:
from Tkinter import *
window = Tk()
input_user = StringVar()
input_field = Entry(window, text=input_user)
input_field.pack(side=BOTTOM, fill=X)
def enter_pressed(event):
input_get = input_field.get()
print(input_get)
label = Label(frame, text=input_get)
input_user.set('')
label.pack()
return "break"
frame = Frame(window, width=300, height=300)
frame.pack_propagate(False) # prevent frame to resize to the labels size
input_field.bind("<Return>", enter_pressed)
frame.pack()
window.mainloop()
但是,如果您希望能够滚动消息,我同意史蒂文·萨默斯(Steven Summers)和WaIR的观点,则应使用文本小部件。
尝试使用更简单的方法(Python 3.7.3)
from tkinter import *
root = Tk()
root.resizable(height = False, width = False)
root.title('Chat Window Thingy')
l1 = Label(root, text = 'Your Text Here',fg='green').pack()
e1 = Entry(root, text = 'Your text here').pack()
root.mainloop()
我是10年级计算机科学专业的学生,所以要谦虚一些,但是我希望这可以解决您的问题:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.