我有一些 tkinter 类和 def,从一个条目开始,该条目将粘贴值,以便在单击 tkinter 按钮时更改 txt 特定行的内容。
录入部分:
class horizontal(): def entry(): global x text=tk.Entry(root) text.grid(row = y ,column = x);x+=1
问题是,无论我如何尝试,text.get() 都无法从输入框中获取任何信息来更改内容,我尝试将其从当前类、全局变量等中删除,但没有任何效果。这是txt读取和替换部分:
class readandwrite: def typein(h): print("**********h is ",h) with open(r"D:\Largecodefile\Customer.txt", 'r', encoding='utf-8') as file: data = file.readlines() print('text get is',text.get()) data[h-1] = "11-201\n"#text.get() with open(r"D:\Largecodefile\Customer.txt", 'w', encoding='utf-8') as file: file.writelines(data)
我尝试打印出你从上面看到的内容,但我什么也没得到,它只是说 text get is就是这样。有什么想法我错在哪里吗?我尝试查看其他问题但找不到任何内容。谢谢你!
编辑:我正在对所发生的事情进行小型复制,但它似乎工作得很好,并像正常一样给出值,这就是我所做的,我也包含在不同的类中以证明它不会受到影响
class notinrturn: def labels(): l = tk.Label(window, bg='white', width=20, text='empty') l.pack() class huhuhu: def weird(): global text if var.get() ==1: print(text.get()) class defentry: def entry(): global x global text text=tk.Entry(window) text.pack() notinrturn.labels() defentry.entry() var=tk.IntVar() c1 = tk.Checkbutton(window, text='Python',variable=var, onvalue=1, offvalue=0, command=huhuhu.weird) c1.pack() window.mainloop()
上面的代码工作得很好,并按预期打印值,但与其他代码不同:(
我将包含 github 链接,以防你们需要任何信息,很抱歉没有提供足够的信息,恐怕它可能太长:https: //github.com/StandardV/Deadline-Tracing
问题出在你的horizontal类的entry方法中。你需要对entry方法进行一些修改,以便将text作为类的成员变量,这样在其他方法中就可以访问它。同时,你也需要将horizontal类的实例传递给readandwrite类的typein方法,以便在按钮点击时触发行为。这里是你需要进行的修改:
horizontal
entry
text
readandwrite
typein
首先,在horizontal类的entry方法中,将text声明为类的成员变量:
class horizontal(): def entry(self): # Add self parameter here global x self.text = tk.Entry(root) # Use self.text instead of text self.text.grid(row=y, column=x) x += 1
接下来,在huhuhu类的weird方法中,你需要访问horizontal类的实例,并将其传递给readandwrite类的typein方法:
huhuhu
weird
class huhuhu: def weird(self): # Add self parameter here global text if var.get() == 1: print(self.text.get()) # Use self.text instead of text readwrite = readandwrite() readwrite.typein(1, self.text.get()) # Pass the instance and value to typein method
最后,在readandwrite类的typein方法中,接收horizontal类的实例作为参数,并进行相关操作:
class readandwrite: def typein(self, h, value): # Add self parameter here print("**********h is ", h) with open(r"D:\Largecodefile\Customer.txt", 'r', encoding='utf-8') as file: data = file.readlines() print('text get is', value) data[h - 1] = value with open(r"D:\Largecodefile\Customer.txt", 'w', encoding='utf-8') as file: file.writelines(data)
在这些修改后,你应该能够在文本框中输入值,然后点击按钮时,能够正确地读取输入的值并进行相应的处理。
此外,你提供的 GitHub 链接似乎是一个私有仓库,我无法查看其中的内容。但是根据你提供的代码和问题描述,上述修改应该能够解决你的问题。