Python 获取其他模块中tkinter实例的参数
我想创建一个程序,通过GUI执行以下操作: 1.)选择将在其中创建一些新目录的目录 2.)使用条目小部件为这些新目录命名 由于程序相当大,我想把代码分成几个模块,这会给我带来一些问题 到目前为止,我做了以下几件事: 我有一个使用.py的“main”程序Python 获取其他模块中tkinter实例的参数,python,class,tkinter,Python,Class,Tkinter,我想创建一个程序,通过GUI执行以下操作: 1.)选择将在其中创建一些新目录的目录 2.)使用条目小部件为这些新目录命名 由于程序相当大,我想把代码分成几个模块,这会给我带来一些问题 到目前为止,我做了以下几件事: 我有一个使用.py的“main”程序 import os, sys import Tkinter import tkFileDialog #import own modules import Gui root = Tkinter.Tk() root.withdraw() di
import os, sys
import Tkinter
import tkFileDialog
#import own modules
import Gui
root = Tkinter.Tk()
root.withdraw()
directory='some path'
tempdir = tkFileDialog.askdirectory(parent=root, initialdir=directory,
title='Please choose a location for your directory')
n2=Gui.DirectoryCreator()
n2.mainloop()
模块Gui如下所示
import Tkinter as tk
class DirectoryCreator(tk.Tk):
text=''
def __init__(self):
tk.Tk.__init__(self)
self.label=tk.Label(self, text='Enter the name of the directory')
self.entry = tk.Entry(self)
self.button = tk.Button(self, text="Name Of Folder",width=15, command=self.on_button)
self.label.grid(row=0,column=0)
self.button.grid(row=0,column=2)
self.entry.grid(row=0,column=1)
def on_button(self):
text= self.entry.get()
self.quit()
现在,关键是我需要在模块中使用.py获取字符串“text”的值。如果我尝试类似n2.text的内容,则streering n2.text就是空的,例如n2.text=”“。如何获取此字符串?在按钮上的
中,使用self.text=self.entry.get()
。仅仅使用text
就像声明一个新变量,而不是使用已经绑定到DirectoryCreator
实例的text
def on_button(self):
self.text= self.entry.get()
self.quit()
当您尝试获取n2.text
时会发生什么情况?有错误吗?它是否返回“
?到底是什么不起作用?是的,它返回n2.text=”“。什么不起作用?我只是不知道如何从using.pyOk中的条目小部件访问条目,这是可行的。但我有点惊讶它居然能起作用。如何定义变量self.text?self不总是指向Tkinter模块的实例吗?如果是,为什么可以声明属于此实例的字符串?我没想到Tkinter对象可以在定义中拥有字符串?除此之外,这只在我将self.text行放在init语句之后时有效?为什么会这样?如果我把它放在前面,我会卡在主循环中,什么也不会发生self
指的是你的tk.tk
子类。当您说self.text=”“
时,您所做的只是在实例上设置一个新属性text
。这与定义self.entry=tk.entry()
的方式相同self.text
只是指向字符串的指针。如果您将其更改为指向任何其他内容,它仍然有效。您可以将self.text
分配给任何数据类型。它没有选择它可以指向的数据类型。而且,只有我答案的第二段才是真正修复它的内容。第一段仅适用于可变数据类型(字符串是不可变的),因此我将从答案中删除它,因为这里不需要它。您只需在\uuuu init\uuuu
中为列表
s和dict
s等内容定义一个属性。你可以用你在问题中的方式定义文本。如果你把它放在\uuuu init\uuu
语句之后,你的意思是什么?你说的是tk.tk.\uuuu init\uuuuuu(self)
表达式吗?是的,这就是我的意思。当我把I放在这句话之前或之后时,情况就不同了。无论如何,非常感谢您的帮助;)