【发布时间】:2020-03-30 11:34:38
【问题描述】:
我准备了两个文件。首先是 GUI 类。第二个文件是一个脚本,我想在其中使用 GUI、数据库和模板类。数据库和模板类有效。我在其他脚本中检查它。
问题: 如何在脚本中使用事件(KeyRelase)表单 GUI 类?
第一:
from tkinter import *
from tkinter.font import Font
from tkinter.ttk import Separator
class GUI:
def __init__(self, master):
self.ent_InventoryNumber = Entry(self.frm_FirstColumn, font=fontStyle, width=35, borderwidth=2, justify=CENTER)
self.ent_InventoryNumber.insert(END, "Wprowadź TUTAJ numer inwentarzowy")
self.ent_InventoryNumber.grid(row=2, column=0, columnspan=2, padx=5, pady=20, ipadx=2, ipady=2)
self.ent_InventoryNumber.bind("<KeyRelease>", lambda x: self.searchChamber())
def searchChamber(self):
return self.ent_InventoryNumber.get()
带有脚本的第二个文件:
import Databases as Db
import Template
from GUI import GUI
def test(a):
print(a)
window = Tk()
myGUI = GUI(window)
window.mainloop()
# test(myGUI.searchChamber()) ???
【问题讨论】:
-
首先你要明白Event-driven programming与
.bind(...定义在哪个文件或代码部分无关。 -
bind可以执行函数但它不能使用从该函数返回的值 - 所以在这里使用return是没用的。最好使用print(self.ent_InventoryNumber.get())或将其分配给某个值 - 即。self.value = self.ent_InventoryNumber.get()- 稍后使用。或者直接在searchChamber()中使用这个值 -
PL:
bindpotrafi wywołać funkcję ale nie potrafi odebrać wartość zwracanej przez tą funkcję (nie ma do czego przypisać tej wartości) więc użycie @9877654331@ jest @bezuż654332. Musisz tę wartość przypisać do jakiejś zmiennej albo użyć od razu wewnątrzsearchChamber.顺便说一句:十个山姆问题 będziesz miał gdy cały kod wrzucisz do jednego pliku - więc question nie jest jak użyć bind w drugim pliku ale jak w ogóle używaćbind. -
顺便说一句:您的代码对我有用。您是否收到任何错误消息或什么?始终将完整的错误消息(从“Traceback”一词开始)作为文本(不是屏幕截图)提出问题(不是评论)。还有其他有用的信息。
标签: python tkinter tkinter-entry