Python:如何更改数据类型并重写导入模块中的变量

Python:如何更改数据类型并重写导入模块中的变量,python,tkinter,Python,Tkinter,我在同一个文件夹中有两个python程序,分别名为main.py和tk_version.py 我正在tk_version.py中导入main.py 我在main.py中有一个变量,它有默认值,比如'xyz' 现在在tk_version.py中,我使用Tkinter GUI从用户处获取变量的值 所以我想要的是,当执行main.py时,必须取常量值,当执行tk_version.py时,用户给定的值将覆盖默认值 例如: main.py var="default" def show(): pri

我在同一个文件夹中有两个python程序,分别名为main.pytk_version.py 我正在tk_version.py中导入main.py 我在main.py中有一个变量,它有默认值,比如'xyz' 现在在tk_version.py中,我使用Tkinter GUI从用户处获取变量的值

所以我想要的是,当执行main.py时,必须取常量值,当执行tk_version.py时,用户给定的值将覆盖默认值

例如:

main.py

var="default"
def show():
    print(var)
if __name__ == '__main__':
   show()
from tkinter import *

import main

Main = Tk()

var= StringVar()
def e1chk():
    global var
    var = e1.get()
    main.show()
    return  


e1=Entry(Main,textvariable=var,width=50)

e1.grid(row=0,column=5,sticky=NSEW)

b1=Button(Main,text="Save",command=e1chk)
b1.grid(row=0,column=8,sticky=NSEW) 
Main.mainloop()
>>> 
=============== RESTART: C:/Users/Gupta Niwas/Desktop/main.py ===============
default
>>>
tk_version.py

var="default"
def show():
    print(var)
if __name__ == '__main__':
   show()
from tkinter import *

import main

Main = Tk()

var= StringVar()
def e1chk():
    global var
    var = e1.get()
    main.show()
    return  


e1=Entry(Main,textvariable=var,width=50)

e1.grid(row=0,column=5,sticky=NSEW)

b1=Button(Main,text="Save",command=e1chk)
b1.grid(row=0,column=8,sticky=NSEW) 
Main.mainloop()
>>> 
=============== RESTART: C:/Users/Gupta Niwas/Desktop/main.py ===============
default
>>>
main.py的输出

var="default"
def show():
    print(var)
if __name__ == '__main__':
   show()
from tkinter import *

import main

Main = Tk()

var= StringVar()
def e1chk():
    global var
    var = e1.get()
    main.show()
    return  


e1=Entry(Main,textvariable=var,width=50)

e1.grid(row=0,column=5,sticky=NSEW)

b1=Button(Main,text="Save",command=e1chk)
b1.grid(row=0,column=8,sticky=NSEW) 
Main.mainloop()
>>> 
=============== RESTART: C:/Users/Gupta Niwas/Desktop/main.py ===============
default
>>>
tk_version.py的输出(我在输入框中输入了“abc”)


我希望变量是StringVar来控制输入框的值。

只需在变量名之前添加
main。

tk_version.py

from tkinter import *

import main

Main = Tk()

main.var = StringVar()


def e1chk():
    main.var = e1.get()
    main.show()
    return


e1 = Entry(Main, textvariable=main.var, width=50)

e1.grid(row=0, column=5, sticky=NSEW)

b1 = Button(Main, text="Save", command=e1chk)
b1.grid(row=0, column=8, sticky=NSEW)
Main.mainloop()
输出:

abc
>>>

tk_version.py中的
var
与main.py中的
var
完全无关-
global
在Python中的意思是“此模块的全局性”,而不是“无处不在的全局性”。完成
import main
后,
main.var
将引用其变量。是否有原因不能使用参数调用show(即使仅在两种情况中的一种情况下,另一种使用默认值)?@jedwards无法传递参数我希望变量为StringVar以控制输入框值。